문제

나는 잠시 전에 나의 것을 발견했다 .gitconfig -파일은 내 repo에서 공개되었습니다. 그것은 나의 비밀 토큰을 포함합니다.

git-add -u 파일과 커밋. 이 명령이 이전 커밋에서 파일을 제거하는지 확실하지 않습니다.

나는 내 역사에 그러한 파일이 없도록 이전 커밋에서 파일을 확인하고 검색하고 싶습니다.

이전 커밋에서 파일을 어떻게 검색 할 수 있습니까?


난 달린다

git filter-branch --tree-filter 'rm .gitconfig' master     # Thanks to Greg!

나는 얻다

Rewrite 84dabfa2ea195ce9aad0309216858b302150017c (1/25)rm: .gitconfig: No such file or directory
tree filter failed: rm .gitconfig

오류 메시지는 저의 커밋 기록에 파일이 없다는 것을 제안합니다.

내 커밋 기록에서 파일을 검색하는 방법이 있습니까? 커밋 이력에 파일이 없다는 것을 알기 위해 제거를 실행할 필요가 없습니까?

도움이 되었습니까?

해결책

짧은 대답:

git filter-branch --tree-filter 'rm -f .gitconfig' master   

참고 -f.

긴 답변 :

rm 파일이 존재하지 않으면 0이 아닌 리턴 코드를 반환합니다. filter-branch 이것이 오류라고 생각하고 다시 쓰기를 중지하십시오. 첨가 -f 이것을 피하십시오.

메모:

대체 명령이 있습니다.

git filter-branch --index-filter 'git rm --cached --ignore-unmatch .gitconfig' master

훨씬 더 빠릅니다. 이 명령은 Man Page의 예 섹션에 문서화되어 있습니다.

다른 팁

과거의 모든 GIT 기록에서 파일을 제거하려면 다음과 같은 것을 사용하여 모든 과거 커밋을 다시 작성해야합니다. git filter-branch. 그러나 이렇게하면 새로운 나무가 과거의 모든 나무에서는 무관심을 가질 수 없게 만들 수 있습니다.

저장소의 모든 eWVISE를 글로벌 기본값 (.gitConfig)으로 재설정하십시오.

git filter-branch -f --commit-filter 'GIT_COMMITTER_NAME="`git config --get user.name`";GIT_AUTHOR_NAME="`git config --get user.name`";GIT_COMMITTER_EMAIL="git config --get user.email";GIT_AUTHOR_EMAIL="`git config --get user.email`";git commit-tree "$@";' HEAD
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top