Nice programing

git 저장소에서 파일을 완전히 제거하려면 어떻게해야합니까?

nicepro 2020. 10. 26. 21:06
반응형

git 저장소에서 파일을 완전히 제거하려면 어떻게해야합니까?


최근에 내 텍스트 편집기가 사용하는 프로젝트 파일 (다른 정크와 함께)에 프로젝트의 git 저장소가 추가되었음을 알았습니다. 실제로 프로젝트의 일부가 아니기 때문에 제거하고 싶지만 git rm저장소에서 이전 버전을 제거하지 않으며 유망 해 보이는 다른 것을 찾을 수 없습니다.


원하는 도구는 git filter-branch입니다. 사용법은 여기설명 되어 있지만 기본적으로 다음과 같습니다.

$ git filter-branch --tree-filter 'rm -f my_file' HEAD

모든 커밋 에서 "my_file"을 제거 합니다.

이렇게하면 모든 커밋이 다시 작성되므로 원격 저장소로 푸시하면 (a) 강제로 업데이트해야하며 (b) 사용자로부터 가져온 다른 모든 사람은 이제 중복 된 커밋을 갖게됩니다 (기록을 다시 작성 했으므로). git rebaseman 페이지 에 설명되어 있습니다.


이것이 git filter-branch목적이지만 리포지토리 기록이 변경되고 기록 재 작성 후 커밋 해시가 달라집니다.

공간을 비우고 싶다면을 사용하는 것이 좋습니다 git forget-blob. 왜냐하면 git filter-branch리모트, 리플 로그, 태그 등에 의해 여전히 참조 될 수 있기 때문에 git만으로는 파일을 잊을 수 없기 때문 입니다.

git forget-blob main.c.swp

여기에서 자세한 정보를 얻을 수 있습니다.

참고 URL : https://stackoverflow.com/questions/3458685/how-can-i-completely-remove-a-file-from-a-git-repository

반응형