.gitignore
파일을 추가한 이미 초기화된 Git 리포지토리가 있습니다. 무시하려는 파일이 무시되도록 파일 인덱스를 새로 고치려면 어떻게 해야 합니까?
질문자 :trobrock
저장소에 이미 추가/초기화된 단일 파일을 추적 해제하려면, 즉 파일 추적을 중지하지만 시스템에서 삭제하지 않으려면 다음을 사용하십시오. git rm --cached filename
.gitignore
있는 모든 파일을 추적 해제하려면 다음을 수행하십시오.
먼저 미해결 코드 변경 사항을 커밋 하고 다음 명령을 실행합니다.
git rm -r --cached .
이렇게 하면 인덱스 (스테이징 영역)에서 변경된 파일이 제거되고 다음을 실행합니다.
git add .
커밋:
git commit -m ".gitignore is now working"
git rm --cached filename
을 실행 취소하려면 git add filename
합니다.
git add .
를 실행하기 전에 중요한 변경 사항을 모두 커밋해야 합니다. 그렇지 않으면 다른 파일에 대한 변경 사항을 잃게 됩니다.
Community Wiki
리포지토리에서 이미 추적된 파일(예: 로컬 환경에 대해 변경해야 하지만 이러한 변경 사항을 체크인하고 싶지 않은 dev.properties 파일)에 대한 변경 사항을 원하는 것보다 무시하려는 경우 이다:
git update-index --assume-unchanged <file>
변경 사항 추적을 다시 시작하려면
git update-index --no-assume-unchanged <file>
git-update-index(1) 매뉴얼 페이지를 참조하십시오.
또한 git-reset을 통해 유지하기 위해 이것이 필요한 경우 update-index skip-worktree
및 no-skip-worktree
옵션을 살펴보십시오.
업데이트: 사람들이 요청했기 때문에 로컬 작업 공간에서 현재 "무시"(--assume-unchanged)된 파일을 확인하기 위한 편리한(그리고 아래에 설명된 이후 업데이트된) 별칭이 있습니다.
$ git config --global alias.ignored = !git ls-files -v | grep "^[[:lower:]]"
dyodji
저장소에 이미 추가/초기화된 파일을 추적 해제하려면, 즉 파일 추적을 중지하지만 시스템에서 삭제하지 않으려면 다음을 사용하십시오. git rm --cached filename
pagetribe
예 - .gitignore
시스템은 현재 git에서 버전 제어를 받고 있지 않은 파일만 무시합니다.
git-add
사용하여 test.txt
라는 파일을 이미 추가한 경우 .gitignore
test.txt
를 추가하면 여전히 test.txt
변경 사항이 추적됩니다.
git rm test.txt
를 실행하고 해당 변경 사항을 커밋해야 합니다. test.txt
변경 사항이 무시됩니다.
Antony Stubbs
.gitignore에서 후행 공백 제거
또한 .gitignore에 후행 공백이 없는지 확인하십시오. 나는 답을 찾고 있었기 때문에 이 질문을 하게 되었고, .gitignore를 잡는 대신 편집기를 열어야 한다는 우스꽝스러운 느낌이 들었습니다. 끝에서 하나의 여분의 공간을 제거하고 지금 작동 휙 :)
MikeJansen
나는 이 단계를 따랐다
git rm -r --cached . git add . git reset HEAD
그 후 git은 무시해야 하는 모든 파일(제 경우에는 *.swp)을 삭제합니다.
Orlando
로컬 시스템에서 파일을 삭제하지 않고 추적 파일을 중지하려면 config/database.yml
파일을 무시하는 것이 좋습니다. 다음을 시도하십시오.
git rm --cached config/database.yml # this will delete your file from git history but not from your local system.
이제 이 파일을 .gitignore
파일에 추가하고 변경 사항을 커밋합니다. 그리고 이제부터 config/database.yml에 대한 변경 사항은 git에서 추적되지 않습니다.
$ echo config/database.yml >> .gitignore
감사 해요
przbadu
어디서나 복잡한 답변!
다음을 사용하십시오.
git rm -r --cached .
무시하려는 파일을 컴퓨터의 마스터가 아닌 원본에서 제거합니다!
그 후에 커밋하고 푸시하십시오!
Ahmad Awais
추적에서 특정 파일 몇 개만 제거하려면:
git update-index --assume-unchanged path/to/file
추적을 다시 시작하려면:
git update-index --no-assume-unchanged path/to/file
Mark Salvatore
dav_i가 말했듯이 파일을 repo에 유지하면서 추가 커밋을 생성하지 않고 변경 사항에서 파일을 제거하려면 다음을 사용할 수 있습니다.
git update-index --assume-unchanged filename
Iman Mohamadi
'대답' 명령이 무엇을 했는지 잘 몰라서 실행했는데 많이 실망했습니다. git repo에서 모든 파일을 재귀적으로 제거합니다.
Stackoverflow를 구출하기 위해 ... "git rm -r ."을 되돌리는 방법은 무엇입니까?
git reset HEAD
덮어 쓰고 싶지 않은 커밋되지 않은 로컬 파일이 있었기 때문에 트릭을 수행했습니다.
averydev
저와 같은 느린 사람들을 위한 또 다른 제안이 있습니다 =) .gitignore 파일을 .git 폴더가 아닌 저장소 루트에 넣습니다. 건배!
Olga
어떤 대답도 나를 위해 일하지 않았습니다.
대신에:
- git 제어 디렉토리 밖으로 파일 이동
- git에서 제거 확인
- 파일을 git 제어 디렉토리로 다시 이동
파일을 다시 이동한 후 git은 이를 무시합니다.
디렉토리에서도 작동합니다!
Hunter S
파일이 이미 버전 관리에 있는 경우 수동으로 제거해야 합니다.
Aragorn
내가 가진 또 다른 문제는 인라인 댓글을 달았다는 것입니다.
tmp/* # ignore my tmp folder (this doesn't work)
이것은 작동합니다
# ignore my tmp folder tmp/
kindahero
귀하의 답변 덕분에 이를 개선하기 위해 이 작은 한 줄짜리 글을 작성할 수 있었습니다. 내 .gitignore 및 repo에서 실행했는데 문제가 없었지만 눈에 띄는 문제가 있는 경우 의견을 보내주십시오. .gitignore
에서 git rm -r --cached
해야 합니다.
cat $(git rev-parse --show-toplevel)/.gitIgnore | sed "s/\/$//" | grep -v "^#" | xargs -L 1 -I {} find $(git rev-parse --show-toplevel) -name "{}" | xargs -L 1 git rm -r --cached
fatal: pathspec '<pathspec>' did not match any files
. 수정되지 않은 파일에 한합니다.
umop
.gitignore에서 이상한 문제를 발견했습니다. 모든 것이 제자리에 있었고 정확해 보였습니다. 내 .gitignore가 "무시"된 유일한 이유는 줄 끝이 Mac 형식(\r)이기 때문입니다. 따라서 올바른 줄 끝으로 파일을 저장한 후(vi에서 :set ff=unix 사용) 모든 것이 매력처럼 작동했습니다!
Johannes Vetter
여기에 언급되지 않은 또 다른 문제는 Windows 메모장에서 .gitignore를 만든 경우 내가 알아낸 것처럼 다른 플랫폼에서 횡설수설하게 보일 수 있다는 것입니다. 핵심은 인코딩이 메모장에서 ANSI로 설정되어 있는지 확인하는 것입니다(또는 내가 한 것처럼 Linux에서 파일을 만듭니다).
여기 내 대답에서 : https://stackoverflow.com/a/11451916/406592
Matt Parkins
내 서버 Linux 서버(내 로컬 dev mac에서는 사실이 아님)에서 별표를 추가하지 않는 한 디렉토리는 무시됩니다.
www/archives/*
이유는 모르겠지만 몇 시간 동안 느슨해져서 공유하고 싶었습니다.
ndemoreau
무시된 많은 파일 추적을 중지해야 하는 경우 몇 가지 명령을 결합할 수 있습니다.
git ls-files -i --exclude-standard | xargs -L1 git rm --cached
이렇게 하면 무시된 파일 추적이 중지됩니다. 실제로 파일 시스템에서 파일을 제거하려면 --cached
옵션을 사용하지 마십시오. 다음과 같이 폴더를 지정하여 검색을 제한할 수도 있습니다.
git ls-files -i --exclude-standard -- ${FOLDER} | xargs -L1 git rm
Etherealone
.gitignore
가 추적되지 않은 파일을 무시하는 것 같지 않은 경우에도 염두에 두어야 할 한 가지는 무시와 같은 줄에 주석이 없어야 한다는 것입니다. 그래서 이것은 괜찮습니다.
# ignore all foo.txt, foo.markdown, foo.dat, etc. foo*
그러나 이것은 작동하지 않습니다:
foo* # ignore all foo.txt, foo.markdown, foo.dat, etc.
.gitignore
"foo* # ignore all foo.txt, foo.markdown, foo.dat, etc."
라는 이름의 파일을 무시합니다."로 해석합니다.
Gabriel Perdue
출처 : http:www.stackoverflow.com/questions/1139762/ignore-files-that-have-already-been-committed-to-a-git-repository
'etc. > StackOverFlow' 카테고리의 다른 글
병합 충돌이 발생했습니다. 병합을 어떻게 중단할 수 있습니까? (0) | 2021.11.09 |
---|---|
__init__.py는 무엇을 위한 것입니까? (0) | 2021.11.09 |
PHP에서 SQL 주입을 방지하려면 어떻게 해야 합니까? (0) | 2021.11.09 |
페이지를 새로고침하지 않고 URL을 수정하려면 어떻게 해야 합니까? (0) | 2021.11.05 |
지정된 커밋을 수정하는 방법은 무엇입니까? (0) | 2021.11.05 |