오래된 git 커밋에서 .gitconfig를 찾을 수 없습니다
-
20-08-2019 - |
문제
나는 잠시 전에 나의 것을 발견했다 .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
제휴하지 않습니다 StackOverflow