这是正常行为。 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
在引用日志中。您可以看到重复的值。
在这里,我曾多次使用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 条目重复。