使用git log时--在不同的分支上缺少我的提交
我的提交历史应该如下所示: 当我签出使用git log时--在不同的分支上缺少我的提交,git,Git,我的提交历史应该如下所示: 当我签出master时,我会将其作为我的提交历史记录: 请注意,我在master分支中,而不是我应该在的headingupdate分支中。如果我签出标题更新分支并运行gitlog--oneline--graph我会得到以下输出: 现在我在右边的分支中,但是我错过了主控上的最后一次提交c26ae66,如上图所示。我很困惑这是为什么。git log的工作原理是从您告诉它的提交开始,然后向后工作 master顶端的提交是c26ae66。它的父级是它的前一个commit
master
时,我会将其作为我的提交历史记录:
请注意,我在master
分支中,而不是我应该在的headingupdate
分支中。如果我签出标题更新
分支并运行gitlog--oneline--graph
我会得到以下输出:
现在我在右边的分支中,但是我错过了主控上的最后一次提交
c26ae66
,如上图所示。我很困惑这是为什么。git log
的工作原理是从您告诉它的提交开始,然后向后工作
master
顶端的提交是c26ae66
。它的父级是它的前一个commit,历史上后退一步是c774c8c
。这是一个合并提交,因此它有两个直接父级:7e344d8
作为它的第一个父级,而7856b65
作为它的第二个父级。(git log--graph
沿向下和向右的方向绘制第二个父对象,第一个父对象向下但笔直绘制,以便您可以区分它们。其他图形绘制程序可能会也可能不会这样做。)这两个提交中的每一个都有一个父对象,依此类推
请注意,7e344d8
也在分支页脚上
——事实上,它是页脚
的提示提交,7856b65
也在,并且是分支侧栏
的提示提交。同时,c774c8c
也在分支标题更新中,是该分支的尖端。因此,此处显示的最后一次提交,73b229f Initial commit
,位于所有这些分支上。在Git中,提交位于多个分支上是很正常的
当您git checkout master
并运行git log
而不告诉它从哪个提交开始时,它从c26ae66
开始—由名称master
标识的提交—当它遍历图形时,一次提交一次,从子级向后移动到父级。这在合并时变得很棘手,因为它必须访问合并的两个分支,但它就是这样做的。首先显示c26ae66
,然后显示c774c8c
。(然后以某种顺序向父母展示:确切的顺序是什么,这是另一个棘手的问题……)
当您git checkout heading update
并运行git log
而不告诉它从哪个提交开始时,它从commitc774c8c
开始:由heading update
标识的提交。然后,它从子级向后移动到父级,一次提交一个。这永远不会访问commitc26ae66
,因为这需要向前,Git的内部箭头都指向后面
所以这一切都很正常。如果希望从其他提交开始,请在命令行中命名它们:
git log [options] master heading-update footer sidebar
例如,或:
git log [options] --branches
或:
--branchs
和--all
选项分别表示所有分支和所有引用。Refs或references是一个通用术语,它包含分支名称,如master
,实际上是Refs/heads/master
,以及标记名称,如v1.2
,实际上是Refs/tags/v1.2
,以及许多其他类型的名称
(--branchs
选项可以采用全局样式的模式,例如--branchs=“feature/*”
。您可能需要也可能不需要在命令行解释器中引用*
,这取决于您使用的shell以及在该shell具有配置选项时设置的各种shell配置选项。)
git log [options] --all