2012-02-11 5 views
16

나는 인터넷 검색을하고 그물 주위에 다양한 글을 읽고 난 해봤되었습니다"WARNING : Ref 'refs/heads/master'가 변경되지 않고 Git에서 영구적으로 파일을 제거하는 방법은 무엇입니까?

git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch Launcher\lib" --prune-empty -- --all

git filter-branch --tree-filter "rm -rf Launcher\lib" --prune-empty -- --all

모든 결과 :

경고 : Ref 'refs/heads/master'는 변경되지 않았습니다.

이 저장소와 중앙 서버의 다른 복제본도 있습니다. 내가 이해할 수 있듯이, 복제본을 가진 다른 사람들은 가져오고 리베이스해야합니다 (병합하지 않음). 그들이 변화를 가하면 여전히 효과가 있습니까?

+0

필터 분기 이후에 변경 사항이 있습니까? – Andy

+0

아니요, 파일 시스템이 동일하며 기록에있는 파일이 표시됩니다. – Tower

+0

마지막 repo 히스토리의 관점에서 speed가 아닌'index-filter'와'tree-filter' 버전의 명령의 차이점이 있습니까? 또한'--','--all'과'--prune-empty'는 무엇을합니까? –

답변

21

그래, 내가 문제를 해결, 그것은 잘못된 경로 였어. 이에

Launcher\lib

: :이 변경

Launcher/lib/

을 지금은 작동합니다)

+1

+1 고마워요 ... 심판 수술을하려고했습니다/* –

+0

마찬가지로,'git mv'로 파일을 옮긴 경우, 이전 커밋은 여전히 ​​이전 위치를 참조하므로'rm'해야합니다 새 위치가 아니라 (또는 두 위치 모두를 사용하여 실행). –

7

나는 내가 있었다 때문에 원하지 미래 참고로 여기를 넣어 해요 동일한 문제 : cmder (또는 기타 ConEmu)을 사용하는 경우 작은 따옴표 대신 큰 따옴표를 사용하십시오. 당신이 당신의 주소에 약간의 공백이있는 경우

또한 따옴표로 경로를 포장 : 그 오류가 발생했습니다 때 문제였다

git filter-branch --force --index-filter \ 
"git rm --cached --ignore-unmatch 'server/bin/some file.txt'" \ 
--prune-empty --tag-name-filter cat -- --all 

.

관련 문제