2009-06-28 2 views
1

잠시 전에 눈치 채 셨습니다. 내 .gitconfig -file이 내 repo에 공개되었습니다. 내 비밀 토큰이 들어 있습니다.이전 Git 커밋에서 .gitconfig를 찾을 수 없습니다.

I 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 

얻을 오류 메시지가 내 커밋 역사에 파일이없는 것을 저에게 제안 실행합니다.

커밋 내역에서 파일을 검색하여 커밋 내역에 파일이 없는지 확인하지 않아도됩니까?

+0

답장을 보내 주셔서 감사합니다. –

답변

4

짧은 답변 :

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 

:

다른 명령이 있습니다. 이 명령은 매뉴얼 페이지의 EXAMPLE 절에 설명되어 있습니다.

+0

@ J-16 : 두 명령 모두 내 질문과 같은 오류 메시지를 표시합니다. 이것은 내가 이미 일부 명령에 의해 파일을 실수로 제거했음을 나에게 암시합니다. --- Git의 역사에서 .gitconfig를 검색하여 그러한 파일이 없다는 것을 어떻게 알 수 있습니까? –

+0

'git log .gitconfig'만이 기록을 보여 주어야합니다. 참고 : .git/config (및 .git/아래의 모든 항목)은 * NOT * 버전이며 .gitconfig 만 있습니다. –

+0

@ J-16 : 57d6과 0d97에 내 비밀 토큰이 있다는 정보를 얻습니다. (1) 어떻게 이러한 커밋을 볼 수 있습니까? (2) 이러한 커밋에서 어떻게 .gitconfig 파일을 제거 할 수 있습니까? –

4

과거의 모든 Git 내역에서 파일을 제거하려면 git filter-branch과 같은 것을 사용하여 과거의 모든 커밋을 다시 작성해야합니다. 그러나 이렇게하면 새로운 나무가 과거의 모든 나무와 병합되지 않으므로주의해서 처리하십시오.

+0

/tmp에있는 Git -files를 가지고 놀고 싶습니다. --- 나는 .git를/tmp에 복사 한 후 성공적으로 재생하지 못했습니다. --- 이것은 .git을 사용하여 모든 파일을/tmp에 복사해야한다고 제안합니다. --- @ 어떻게 명령을 테스트 할 수있는 두 번째 사본을 만드시겠습니까? –

+1

"git clone"을 사용하여 저장소를 복제 할 수 있습니다. 복제 된 저장소에 수행하는 작업은 원래 저장소에 영향을 미치지 않습니다 (변경 사항을 푸시하지 않는 한). –

1

리포지토리의 모든 전자 서명을 글로벌 기본값 (.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 "[email protected]";' HEAD