0

我认为这应该是两个不同的 HEADS,所以为什么它们对应相同的 sha 值,即 2aad8cb ...

git reflog
2aad8cb HEAD@{0}: checkout: moving from master to xxx_master   
2aad8cb HEAD@{1}: clone: from git@github.com:xxx/xxx.git
4

2 回答 2

2

git branch newbranch当您第一次通过or创建新分支时git checkout -b newbranch masternewbranch将指向与分支点完全相同的提交(无论 HEAD 在第一个示例中还是master在第二个示例中)。因此,例如,看到两者具有相同的 SHA 是很正常masternewbranch。当您在任一分支上创建新提交时,该分支将指向新提交,该新提交将以前的值作为其父级(过度简化以避免讨论合并等)。

于 2012-09-19T19:14:08.597 回答
1

那是正常的行为。reflog 会跟踪 head 曾经在哪里以及分支曾经在哪里。这样做

git checkout master
git checkout experiment
git checkout master
git checkout experiment
git checkout master
git checkout experiment

最终会得到

2aad8cb HEAD@{0}: checkout: moving from master to experiment
d8cbf4b HEAD@{1}: checkout: moving from experiment to master
2aad8cb HEAD@{2}: checkout: moving from master to experiment
d8cbf4b HEAD@{3}: checkout: moving from experiment to master
2aad8cb HEAD@{4}: checkout: moving from master to experiment
d8cbf4b HEAD@{5}: checkout: moving from experiment to master

在 reflog 中。您可以看到重复的值。

在这里,我使用git checkout -了几次在检查 SHA-1(分离头)和 master 之间切换:

5016d9e (HEAD, origin/master, master) HEAD@{0}: checkout: moving from 5016d9e82379923c21268e73e4dad3122a5639ac to master
5016d9e (HEAD, origin/master, master) HEAD@{1}: checkout: moving from master to 5016d9e82379923c21268e73e4dad3122a5639ac
5016d9e (HEAD, origin/master, master) HEAD@{2}: checkout: moving from 5016d9e82379923c21268e73e4dad3122a5639ac to master
5016d9e (HEAD, origin/master, master) HEAD@{3}: checkout: moving from master to 5016d9e82379923c21268e73e4dad3122a5639ac
5016d9e (HEAD, origin/master, master) HEAD@{4}: checkout: moving from 5016d9e82379923c21268e73e4dad3122a5639ac to master

您可以看到相同的 SHA1 条目重复。

于 2012-09-19T17:01:52.900 回答