为什么git修订版选择不选择此提交?

时间:2014-05-12 14:22:08

标签: git

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 HEADgit show HEAD~1git show HEAD~2显示正确的提交(A,B和C)。

我自然认为git show HEAD~3会显示提交D,但不会显示提交D,而是显示提交E。

如何在不使用SHA的情况下选择D提交?

1 个答案:

答案 0 :(得分:2)

您的历史记录不是线性的,因为24179a67763900ea42dd8124b2e383ac880b2dd7(又名HEAD~1)有两个父母。根据{{​​3}} HEAD~3表示HEAD^^^。这意味着应用trice操作"得到第一个父母"。 df9ad689ba70f7bc658d9c68d95dd3ebdd1ae7ec不是HEAD~3。它是HEAD^1^2HEAD的第一个父级的第二个父级。)