git reflog 中的第二列是什么?

What is the 2nd column in the git reflog?

我只是做了一个简单的 git reflog 这是我得到的前几行:

column1                 Column2                                Column3
2797a1d4 (HEAD -> master, upstream/master) HEAD@{0}: checkout: moving from master to master
2797a1d4 (HEAD -> master, upstream/master) HEAD@{1}: pull upstream master: Fast-forward
a461a29f HEAD@{2}: checkout: moving from master to master
a461a29f HEAD@{3}: reset: moving to HEAD
a461a29f HEAD@{4}: pull upstream master: Fast-forward
784f2cp3 (yy, alphabets, hotFix) HEAD@{5}: checkout: moving from yy to master
784f2cp3 (yy, alphabets, hotFix) HEAD@{6}: checkout: moving from master to yy
784f2cp3 (yy, alphabets, hotFix) HEAD@{7}: checkout: moving from alphabets to master

我想了解每一列代表什么。阅读 this post and this question 我已经学会了:

此外,我不确定为什么同一提交有多行?是因为不同的分支都指向同一个提交,它们之间没有代码变化吗?

reflog 告诉您 HEAD 是如何移动的。有超过三列。 Git 文档对此很迟钝。事实证明 git reflog 只是 git log 的别名,带有一些开关。

git reflog show [the default] is an alias for git log -g --abbrev-commit --pretty=oneline;

784f2cp3 (yy, alphabets, hotFix) HEAD@{7}: checkout: moving from alphabets to master
  1. 784f2cp3 缩写提交。
  2. (yy, alphabets, hotFix) b运行ch 在这次提交中领先,就像 git log --decorate.
  3. HEAD@{7} 此提交相对于 HEAD 的位置,由 -g 添加。
  4. checkout 什么命令是 运行。
  5. moving from alphabets to master 人类可读的描述。

(4 和 5 在技术上是同一列。)

这表示您在 b运行ch alphabets 和 运行 git checkout master 上。

Additionally I'm uncertain as to why there is multiple lines of the same commit? Is it because different branches are all pointing to the same commit and there is no code changes between them?

是的,完全正确。

784f2cp3 (yy, alphabets, hotFix) HEAD@{5}: checkout: moving from yy to master
784f2cp3 (yy, alphabets, hotFix) HEAD@{6}: checkout: moving from master to yy
784f2cp3 (yy, alphabets, hotFix) HEAD@{7}: checkout: moving from alphabets to master

yyalphabetshotFixmaster 都在同一提交上。在它们之间进行检查只是更改下一次提交时将移动哪个 b运行ch 头。

其他可能是内部 HEAD 运动,发生在您 运行 git pull 时。 git pullgit fetchgit merge 的组合。