커밋 후 .gitignore


210

Github에서 호스팅되는 git 저장소가 있습니다. 많은 파일을 커밋 후, 나는 내가 만들 필요가 실현하고 .gitignore및 제외 .exe, .obj파일을.

그러나 커밋 된 파일을 리포지토리에서 자동으로 제거합니까? 그것을 강요 할 방법이 있습니까?


6
미래의 구글 직원들은 이것이 매우 유용하다는 것을 알게 될 것입니다. 간결하고 요점 : git-tower.com/learn/git/faq/ignore-tracked-files-in-git
Austin Dean

답변:


331

아니요 repo에서 이미 커밋 된 파일을 파일에 추가 되었기 때문에 강제로 제거 할 수 없습니다. .gitignore

당신은해야 git rm --cached당신이 REPO에서 원하지 않는 파일을 제거 할 수 있습니다. (로컬 복사본을 유지하고 리포지토리에서 제거하고 싶을 수도 있기 때문에 --cached) 따라서 리포지토리에서 모든 exe를 제거하려면

git rm --cached /\*.exe

(별표 *는 셸에서 인용됩니다. 셸이 아닌 git은 파일 및 하위 디렉토리의 경로 이름을 확장 할 수 있습니다)


6
@Madhur Ahuja 실제로 당신이 그렇게하면 당신 git rm /\*.exe의 repo에있는 모든 exe를 삭제합니다
manojlds

4
/ \는 무엇입니까?
Costa

5
@Costa는 별표를 피하여 쉘이 의도 한대로 해석하지 못하게합니다 git.
Lambart

2
경고 : 파일은 로컬에 보관됩니다. 사실입니다 ... 그러나 다른 사용자 git pull는 파일을 삭제 한 것을 볼 수 있습니다.
ByScripts

42

그러나 커밋 된 파일을 리포지토리에서 자동으로 제거합니까?

아니요. 기존 .gitignore파일을 사용하더라도 -f(force) 플래그를 사용하여 "무시 된"파일을 스테이징 할 수 있습니다. 파일이 이미 커밋 된 경우 자동으로 제거되지 않습니다.

git rm --cached path/to/ignored.exe

내가 개별적으로 .exe를 개별적으로 제거했음을 의미합니까?
Madhur Ahuja

당신은 아마 이것을 배치 할 수는 있지만, 이것이 Windows에서 어떻게 작동하는지 모르겠습니다.
KingCrunch

30

변경 사항을 아직 푸시하지 않은 경우 :

git rm -r --cached .
git add .
git commit -m 'clear git cache'
git push

15

.idea와 대상 폴더를 제거해야했고 모든 주석을 읽은 후에 이것이 효과가있었습니다.

git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'

그리고 마스터로 밀어


.idea내 문제 였어 그것도 당신 것 같아요:)
Olivier Pons

5

그러나 커밋 된 파일을 리포지토리에서 자동으로 제거합니까?

아니.

이를위한 '최상의'레시피는 다음 git filter-branch과 같이 쓰여 있습니다.

git-filter-branch의 매뉴얼 페이지에는 포괄적 인 예제가 포함되어 있습니다.

참고 기록을 다시 작성하게됩니다. 실수로 추가 한 파일이 포함 된 개정판을 게시 한 경우 해당 공개 지사 사용자에게 문제가 발생할 수 있습니다. 그들에게 알리거나 파일을 얼마나 제거해야하는지 생각해보십시오.

참고 태그가있는 경우 항상 --tag-name-filter cat옵션을 사용하십시오 git filter-branch. 나중에 필요하다는 것을 깨달았을 때 결코 아프지 않고 머리통을 구할 것입니다.


나는 재 작성 57c1f1f04a3ed01f50c3260714cfc82c973ac816 보여이 명령을 실행 (3/3) 경고 : 심판 '심판 / 헤드 / 마스터'변경하고 아무 일도하지
Madhur Ahuja을

이것은 경고이며, 마스터 브랜치에 아직 제거 할 파일의 개정이 포함되어 있지 않음을 의미합니다. 쉽게 확인할 수 있습니다. 문제가 있으면 질문을 업데이트하십시오. 추신 : 사용- --all모든 (로컬) 브랜치를 한 번에 다시 쓰려면
sehe

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.