2012-10-14 4 views
1

커밋 훅을 테스트하기 위해 일부 테스트 커밋을했고 항상 마지막 커밋으로 인덱스를 재설정했습니다. 이제 이러한 오래된 커밋은 여전히 ​​존재합니다.Git에서 stty 커밋을 제거합니다.

> git reflog 
fcdabf7 [email protected]{0}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29 
5c97564 [email protected]{1}: commit: t 
fcdabf7 [email protected]{2}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29 
ae52246 [email protected]{3}: commit: t 
fcdabf7 [email protected]{4}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29 
c58aeef [email protected]{5}: commit: t 
fcdabf7 [email protected]{6}: reset: moving to fcdabf7e01845d6f000fc3cef2edc999c57a7e29 
3a2cc3b [email protected]{7}: commit: test 

어떻게 제거 할 수 있습니까? 그리고 기술적 인 이해를 위해 : 만약 내가 그들을 내버려두면, 밀어 넣기 만하면 업스트림 리포에 밀릴 것인가?

+2

Afaik 사용자가 푸시하는 지점을 통해 도달 가능한 커밋 만 푸시합니다. 'git log'에 없으면 푸시되지 않습니다. 또한 도달 할 수없는 커밋을 지우려면'git gc '를 시도하십시오. – ZeissS

+0

'git gc --aggressive --prun = 2015-01-01'을 시도했지만 reflog에서 제거하지 않았습니다. – AndiDog

+0

http://stackoverflow.com/q/1904860/11343 – CharlesB

답변

0

그 자체 매달려 있지 않은 reflog 항목에서 참조하는 커밋합니다. 의 reflog를 지우려면

git reflog expire --expire=0 --all 

이후 git prune를 제거하는 데 사용할 수있는 - 지금 매달려은 - 커밋합니다.

+0

그걸로 작동하고'git gc --aggressive --prune = now'가 커밋을 제거했습니다. 물론 내가 그 일을 할 때마다 reflog를 잃어 버린다는 것을 의미합니다. – AndiDog

0

우선, 원격 저장소에 들어가는 매달려있는 커밋에 대해 걱정할 필요가 없습니다. 그들은 밀리지 않으며, 일반적으로 정당한 과정에서 정화 될 것입니다. 당신이 그런 매달려 객체를 취소하려는 경우

그러나, 실행 해보십시오 :

git gc --prune=now 
관련 문제