可视化和理解git中的快进

时间:2012-10-08 15:20:35

标签: git version-control

我刚从原点和git status报告中获取:

  

你的分支落后于原点/ 13次提交,可以   快进

严格来说,完全意味着什么?这是不是意味着:

  1. HEAD位于相应的远程跟踪分支origin/<branch_name>)后面。

  2. <branch_name>是否位于相应的远程跟踪分支origin/<branch_name>)后面?

  3. 如果我使用分离 HEAD该怎么办? (即,如果我的HEAD<branch_name>没有指向相同的提交。)

    有没有办法在图表上显示这些指针(HEAD<branch_name>origin/<branch_name>?我尝试过使用git log --graph,但我想我只看到了不同的提交,他们合并加班。

2 个答案:

答案 0 :(得分:3)

让我们看一个例子。此存储库有一个名为origin的远程控制器,其分支名为master。我还有一个名为master的分支,我目前已经检查过了。

% git log --decorate --graph --pretty=oneline --abbrev-commit --all
* 072a57a (origin/master, origin/HEAD) C
* 87011c4 B
* d3c4a48 (HEAD, master) A

当我运行git status时,它通过两次提交告诉我我的分支master落后于origin/master

% git status
# On branch master
# Your branch is behind 'origin/master' by 2 commits, and can be fast-forwarded.
#
nothing to commit (working directory clean)

答案 1 :(得分:1)

“您的分支”表示您所在的分支HEAD指向<branch_name>,而1和2表示相同的意思。 (git status仅报告您所在分支机构的状态,而不是所有本地分支机构。)

该消息意味着您的分支指向一个提交,该提交是远程分支头的直接祖先,因此它指向远程分支头部的父提交网络上的某个提交。这没什么比这复杂的了。

如果您在分离头时收到了消息,那么您应该记录一个错误 - 它不应该发生。

请注意,您的分支名称不必与遥控器上的分支名称相匹配 - 如果<alt-branch-name>正在跟踪origin/<branch-name>,则该消息会告诉您<alt-branch-name>落后origin/<branch-name> 1}}。