git log
显示:
commit 9914d84b8dc8fa21826dbaefe753d2a8a2efa09c (HEAD)
Date: Mon May 12
A
commit 24179a67763900ea42dd8124b2e383ac880b2dd7 (HEAD~1)
Merge: fe3a994 df9ad68
Date: Mon May 12
(B) Merge branch 'master' of this repository
commit fe3a994d7c1a8b174511a86dd7503427caa45bd7 (HEAD~2)
Date: Mon May 12
C
commit df9ad689ba70f7bc658d9c68d95dd3ebdd1ae7ec (HEAD~3)
Date: Mon May 12
D
commit 2b403d17449abbabee4c0ecf26199382bef974c7 (HEAD~4)
Date: Mon May 12
E
commit b394dba1faf79d18129c172843115ae66a964e76 (HEAD~5)
Date: Sun May 11
F
git show HEAD
,git show HEAD~1
和git show HEAD~2
显示正确的提交(A,B和C)。
我自然认为git show HEAD~3
会显示提交D,但不会显示提交D,而是显示提交E。
如何在不使用SHA的情况下选择D提交?
答案 0 :(得分:2)
您的历史记录不是线性的,因为24179a67763900ea42dd8124b2e383ac880b2dd7
(又名HEAD~1
)有两个父母。根据{{3}} HEAD~3
表示HEAD^^^
。这意味着应用trice操作"得到第一个父母"。 df9ad689ba70f7bc658d9c68d95dd3ebdd1ae7ec
不是HEAD~3
。它是HEAD^1^2
(HEAD
的第一个父级的第二个父级。)