git 저장소에 있으면 안되는 파일을 커밋했습니다. 삭제하고 커밋했으나 여전히 git 기록을 통해 파일에 액세스 할 수 있습니다.힘내 : 커밋 된 파일을 영구히 삭제하는 방법?
커밋 된 파일을 영구적으로 삭제하면 어떻게 추적합니까?
git 저장소에 있으면 안되는 파일을 커밋했습니다. 삭제하고 커밋했으나 여전히 git 기록을 통해 파일에 액세스 할 수 있습니다.힘내 : 커밋 된 파일을 영구히 삭제하는 방법?
커밋 된 파일을 영구적으로 삭제하면 어떻게 추적합니까?
filter-branch
을 사용하여 파일을 영구적으로 제거 할 수 있습니다. 저장소의 모든 개정판에서 인수로 명령을 적용합니다.
git filter-branch --tree-filter 'rm -rf your_file' HEAD
This detailed post 당신을 도울 수 있습니다. git doc도 꽤 도움이됩니다.
주석에서 언급했듯이 로컬 저장소를 정리하려면 git gc
이 필요하고 원격 저장소를 업데이트하려면 git push
이 필요합니다.
또한 'git gc'가 누락되었습니다. 매달려있는 커밋이 가비지 수집 될 때까지 여전히 존재합니다. – AD7six
이 도움이 될 수 있습니다 :
https://help.github.com/articles/remove-sensitive-data
는 다음 명령은이 작업을 수행합니다
git clone https://github.com/defunkt/github-gem.git
# Initialized empty Git repository in /Users/tekkub/tmp/github-gem/.git/
# remote: Counting objects: 1301, done.
# remote: Compressing objects: 100% (769/769), done.
# remote: Total 1301 (delta 724), reused 910 (delta 522)
# Receiving objects: 100% (1301/1301), 164.39 KiB, done.
# Resolving deltas: 100% (724/724), done.
cd github-gem
git filter-branch --force --index-filter \
'git rm --cached --ignore-unmatch Rakefile' \
--prune-empty --tag-name-filter cat -- --all
# Rewrite 48dc599c80e20527ed902928085e7861e6b3cbe6 (266/266)
# Ref 'refs/heads/master' was rewritten
이 명령은 모든 브랜치와 태그의 전체 역사를 실행, 어떤 커밋 변경 그 파일은 Rakefile 파일과 관련이 있으며 이후에 커밋됩니다. 이후에 비어있는 커밋 (Rakefile 만 변경했기 때문에)은 완전히 제거됩니다. 파일 이름뿐 아니라 제거 할 파일의 전체 경로를 지정해야합니다.
"항상 사용"이란 "영구적으로"를 의미합니까? –
그리고 '흔적 없음'이란 무엇을 의미합니까? 나는 역사에서 파일을 제거하는 것이 가능하다고 생각하지 않는다. 그것은 이전의 커밋에 존재할 것이다. 하지만 버전 관리가 어떻게 작동하는지는 – ThanksForAllTheFish
Github의 [중요한 데이터 삭제] (https://help.github.com/articles/remove-sensitive-data) 페이지 – fbstj