我刚做了一个简单的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和this question我已经学会了:
HEAD@{0}
到HEAD@{7}
的概念。 请勿获取括号中的部分!。 (yy, alphabets, hotFix)
代表什么?此外,我不确定为什么同一次提交有多行?是因为不同的分支都指向同一个提交,它们之间没有代码更改吗?
答案 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
784f2cp3
缩写提交。(yy, alphabets, hotFix)
分支负责此提交,就像git log --decorate
。HEAD@{7}
此提交相对于HEAD
的位置,由-g
添加。checkout
运行了什么命令。moving from alphabets to master
人类可读的描述。(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
yy
,alphabets
,hotFix
和master
都在同一次提交中。在它们之间检查只是更改下一次提交时将移动哪个分支头。
其他可能是内部HEAD
移动,当您运行git pull
时会发生这种移动。 git pull
是git fetch
和git merge
的组合。