일부 .csproj
파일 이 포함 된 프로젝트를 복제했습니다 . 로컬 csproj
파일이 Git에 의해 추적되거나 패치를 생성 할 때 필요하지는 않지만 프로젝트에 분명히 필요합니다.
*.csproj
LOCAL에 추가 .gitignore
했지만 파일이 이미 저장소에 있습니다.
git status를 입력하면 csproj
패치를 추적하거나 제출하고 싶지 않은 변경 사항이 표시 됩니다.
상태를 확인하거나 패치를 만들 때 변경 사항을 볼 수 없도록 개인 저장소에서 이러한 파일의 “추적”을 제거하려면 (그러나 파일을 소스에 보관하십시오) 어떻게해야합니까?
이 상황을 처리하는 올바른 / 정규적인 방법이 있습니까?
답변
git rm --cached
수정본 제어에서 제거 할 각 파일을 호출 하면됩니다. 로컬 무시 패턴이 올바른 한 git status 출력에 이러한 파일이 포함되지 않습니다.
이 솔루션은 저장소에서 파일을 제거하므로 모든 개발자는 파일의 로컬 (개정되지 않은 제어) 사본을 유지해야합니다.
git이 이러한 파일의 변경 사항을 감지하지 못하게하려면 다음 명령을 사용해야합니다.
git update-index --assume-unchanged [path]
아마도하고 싶은 일 : (아래 @Ryan Taylor 답변 )
- 이것은 git에게 파일이나 폴더의 독립적 인 버전을 원한다는 것을 알리는 것입니다. 예를 들어, 프로덕션 / 스테이징 구성 파일을 덮어 쓰거나 삭제하지 않으려 고합니다.
git update-index --skip-worktree <path-name>
전체 답변은 다음 URL에 있습니다 : http://source.kohlerville.com/2009/02/untrack-files-in-git/
답변
그렇게 git update-index --assume-unchanged file.csproj
하면 git은 file.csproj에서 자동으로 변경 사항을 확인하지 않습니다. 변경 할 때마다 git 상태로 변경되지 않습니다. 따라서 모든 .csproj 파일을 이런 식으로 표시 할 수 있지만 업스트림 리포지토리가 보내는 새 파일을 수동으로 표시해야합니다. ( .gitignore
또는 .git/info/exclude
에 파일이 있으면 생성 한 항목은 무시됩니다.)
나는 .csproj 파일이 무엇인지 완전히 확신하지 못합니다 … IDE 구성 라인 (Eclipse의 .eclipse 및 .classpath 파일과 유사)에 해당하는 경우 소스에서 제어 할 수 없다고 제안합니다. 모두. 반면에, Makefile과 같은 빌드 시스템의 일부인 경우 분명히 선택해야합니다. 그리고 선택적 로컬 변경 사항 (예 : local.csproj a la config.mk)을 선택하는 방법이 유용합니다. : 빌드를 전역 부분과 로컬 재정의로 나눕니다.
답변
3 가지 옵션이 있습니다. 아마도 # 3을 원할 것입니다
1. 이렇게하면 로컬 파일이 유지되지만 다른 사람이 파일을 가져 오면 삭제됩니다.
git rm --cached <file-name>
또는 git rm -r --cached <folder-name>
2. 이것은 많은 파일이있는 폴더와 같은 최적화를위한 것입니다. git은 로컬에 변경 사항이 없을 때마다 변경 사항이 있는지 매번 큰 폴더 확인을 중지하도록 지시합니다. assume-unchanged
(당길 때) 지수는 파일 / 폴더 상류 변경이있는 경우 덮어 리셋 및 파일 (들)입니다.
git update-index --assume-unchanged <path-name>
3. 이것은 git에게 파일이나 폴더의 독립적 인 버전을 원한다는 것을 알리기위한 것입니다. 예를 들어, 프로덕션 / 스테이징 구성 파일을 덮어 쓰거나 삭제하지 않으려 고합니다.
git update-index --skip-worktree <path-name>
git과 함께 git update-index
전파되지 않으며 각 사용자가 독립적으로 실행해야 한다는 것을 알아야합니다 .
답변
이것은 2 단계 프로세스입니다.
-
파일 / 폴더 추적을 제거하되 디스크에 보관하십시오.
git rm --cached
이제 그들은 “변경된”것으로 나타나지 않지만 여전히
untracked files in git status -u
-
에 추가
.gitignore
답변
수락 된 답변이 여전히 효과가 없었습니다.
나는 사용했다
git rm -r –cached.
git add.
git commit -m “.gitignore 수정”
여기 에서 답을 찾았습니다
답변
.gitignore를 잊었습니까?
전체 프로젝트를 로컬로 가지고 있지만 git ignore를 추가하지 않고 이제 불필요한 파일을 추적하는 경우이 명령을 사용하여 모든 것을 제거하십시오
git rm --cached -r .
프로젝트의 루트에 있는지 확인하십시오.
그럼 평소에 할 수 있습니다
더하다
git add .
범하다
git commit -m 'removed all and added with git ignore'
푸시
git push origin master
결론
이것이 변경을 .gitignore
하거나 함께 잊어 버린 사람들에게 도움이 되기를 바랍니다.
- 전체 캐시를 제거합니다
- 당신의 .gitignore를 본다
- 추적하려는 파일을 추가합니다
- 당신의 레포로 밀어
답변
다른 답변에서 지적했듯이 선택한 답변이 잘못되었습니다.
대답 다른 질문은 필요한 것 스킵-worktree 수 있음을 시사한다.
git update-index --skip-worktree <file>