2009-09-01 4 views
2

커밋이 반드시 지점에있는 것은 아니기 때문에 이러한 커밋을보고 관리하는 방법은 무엇입니까? 또한, gitk에서 이러한 커밋을 볼 수 있습니까?Git에서는 지점에없는 커밋을보고 관리하는 방법은 무엇입니까?

고마워요!

PS : 그냥 일을 명확하게하기 위해, 여기에 예입니다

git init 
git commit 
touch toto 
git add toto 
git commit -a 
echo $RANDOM > toto 
git commit -a 
git checkout f798e54 #checkout initial commit 
echo $RANDOM > toto 
git commit -a #"untracked commit" 
gitk --all 
git branch 
git log 
git checkout master #back on the main branch 
gitk --all #untracked commit is lost? 
git log 
git branch 

어떻게 다시 내 "비 추적 커밋"받을 수 있나요?

답변

8

이 상황을 detached HEAD라고합니다. 일반적으로 gitk와 같은 도구는 심볼릭 브랜치 이름으로 접근 할 수없는 커밋을 표시하지 않습니다.

커밋을 되돌리려면 git reflog을 사용하여 분리 된 HEAD를 포함한 모든 최근 활동의 로그를 표시 할 수 있습니다. 그것을 찾으면 git checkout의 커밋 ID를 사용하여 되돌릴 수 있습니다. 가치 있다고 판단되면 해당 지점에 지점을 제공 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. 나는 내가 모르는 자식의 전체 영역을 발견했다. :) git fsck를 언급 한 "해커"에게도 감사드립니다. –

+0

브랜치에 돌아 오기 위해 커밋 ID가 필요하지 않습니다.'git checkout -b newbranch'이면 충분합니다. –

+0

당신이 익명의 지사에 있다는 것을 알게되면 Jakub의 제안이 효과가 있습니다. reflog 트릭은 명명 된 지점으로 이동 한 후 10 분 후에 실현됩니다. – tialaramex

2

git reflog은 도달 할 수없는 커밋에 액세스하는 데 사용할 수있는 [email protected]{0}과 같은 기호 이름을 표시합니다. 그런 다음 gitk --all [email protected]{0}을 사용하여 저장소에있는 위치를 확인할 수 있습니다.

3

git fsck --unreachable에 대해 이야기 할 수 있습니까?

관련 문제