git reflog中的第二列是什么?

时间:2018-02-05 19:38:57

标签: git 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 postthis question我已经学会了:

  • Column1显然是提交,
  • Column2是我感到困惑的地方。我理解HEAD@{0}HEAD@{7}的概念。 请勿获取括号中的部分!(yy, alphabets, hotFix)代表什么?
  • Column3是行动,即结帐/拉出以及消息。

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

1 个答案:

答案 0 :(得分:8)

reflog告诉您HEAD的移动方式。有三列以上。 Git文档对此很迟钝。结果是git reflog只是git log的别名,带有一些开关。

  

git reflog show [默认]是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)分支负责此提交,就像git log --decorate
  3. 一样
  4. HEAD@{7}此提交相对于HEAD的位置,由-g添加。
  5. checkout运行了什么命令。
  6. moving from alphabets to master人类可读的描述。
  7. (4和5在技术上是同一列。)

    这表示您在分支机构alphabets上并运行git checkout master

      

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

    是的,确实。

    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都在同一次提交中。在它们之间检查只是更改下一次提交时将移动哪个分支头。

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