답변:
아니요 repo에서 이미 커밋 된 파일을 파일에 추가 되었기 때문에 강제로 제거 할 수 없습니다. .gitignore
당신은해야 git rm --cached
당신이 REPO에서 원하지 않는 파일을 제거 할 수 있습니다. (로컬 복사본을 유지하고 리포지토리에서 제거하고 싶을 수도 있기 때문에 --cached) 따라서 리포지토리에서 모든 exe를 제거하려면
git rm --cached /\*.exe
(별표 *는 셸에서 인용됩니다. 셸이 아닌 git은 파일 및 하위 디렉토리의 경로 이름을 확장 할 수 있습니다)
git rm /\*.exe
의 repo에있는 모든 exe를 삭제합니다
git
.
git pull
는 파일을 삭제 한 것을 볼 수 있습니다.
그러나 커밋 된 파일을 리포지토리에서 자동으로 제거합니까?
아니요. 기존 .gitignore
파일을 사용하더라도 -f
(force) 플래그를 사용하여 "무시 된"파일을 스테이징 할 수 있습니다. 파일이 이미 커밋 된 경우 자동으로 제거되지 않습니다.
git rm --cached path/to/ignored.exe
.idea와 대상 폴더를 제거해야했고 모든 주석을 읽은 후에 이것이 효과가있었습니다.
git rm -r .idea
git rm -r target
git commit -m 'removed .idea folder'
그리고 마스터로 밀어
.idea
내 문제 였어 그것도 당신 것 같아요:)
그러나 커밋 된 파일을 리포지토리에서 자동으로 제거합니까?
아니.
이를위한 '최상의'레시피는 다음 git filter-branch
과 같이 쓰여 있습니다.
git-filter-branch의 매뉴얼 페이지에는 포괄적 인 예제가 포함되어 있습니다.
참고 기록을 다시 작성하게됩니다. 실수로 추가 한 파일이 포함 된 개정판을 게시 한 경우 해당 공개 지사 사용자에게 문제가 발생할 수 있습니다. 그들에게 알리거나 파일을 얼마나 제거해야하는지 생각해보십시오.
참고 태그가있는 경우 항상 --tag-name-filter cat
옵션을 사용하십시오 git filter-branch
. 나중에 필요하다는 것을 깨달았을 때 결코 아프지 않고 머리통을 구할 것입니다.
--all
모든 (로컬) 브랜치를 한 번에 다시 쓰려면
파일을 삭제 한 다음 커밋 한 후에도 해당 파일은 기록에 남아 있습니다. 이를 삭제하려면 BFG Repo-Cleaner 사용을 고려하십시오 . git-filter-branch의 대안입니다.