git show-branch并尝试修复/弄清楚发生了什么

时间:2013-07-25 20:38:39

标签: git

一个git noob(或者可能以一种非常简单的方式使用它一段时间)并且抱歉如果这个问题到处都是。当我运行show-branch时,我有以下内容。我想弄明白到底发生了什么。

我已阅读http://www.gitguys.com/topics/git-show-branch-to-see-branches-and-their-commits/,但仍有一些问题。

  • m-development的状态是什么 - > m-development~5提交?据gitguys说,他们已经合并;这意味着合并成主人吗?
  • 对于m-development - m-development~5,他们有一个+;在gitguys上,它表示这意味着Commit is in the branch-意味着Commit is in the branch as a merge。关于+,这是否意味着掌握与否?如果是的话,我很确定它被合并了;如果它被合并到母版中,它不应该在主列中显示为*吗?

thx任何帮助

Thu Jul 25$ git show-branch
* [master] tmp merge
 ! [m-development] Adding comments view controller
--
-  [master] tmp merge
*  [master^2] updated with some debug and logged YES -> NO
*  [master^] project updates
*  [master~2] updated name
*  [master~3] updated here
*  [master~4] updated for is_liked values
*  [master~5] updated with message saving
*  [master~6] updated here
*  [master~7] updated with 401 instead of 200; explicit -X POST on curl calls
*  [master~8] updated
*  [master~9] initial checkin
 + [m-development] Adding comments view controller
 + [m-development^] Adding isFavorited / isLiked fields, filling in with initializers
 + [m-development~2] Adding favorite / unfavorite functionality
 + [m-development~3] Hooking up HTTP call for password reset
 + [m-development~4] Implementing login and signup
 + [m-development~5] Stubbing profile view controller
*+ [master~10] Updating authentication view controllers
Thu Jul 25$

1 个答案:

答案 0 :(得分:2)

关于show-branch

的回答

好的,这就是你的show-branch输出正在发生的事情。您需要了解的是它表示一个表,每列代表一个分支,每行代表一个提交。因此,表的每个单元格表示分支中是否存在提交。

原始海报问:

  

m-development [to] m-development~5提交的状态是什么?据gitguys说,他们已经合并;这是否意味着合并为主人?

如果表示m-development的提交的行在master的列中有非空格字符,则master包含这些提交,因此分支已合并到{{ 1}}。在这种情况下,master输出将如下所示(缩写为相关部分):

show-branch

* [master~8] * [master~9] *+ [m-development] 的输出似乎在找到作为引用传递的所有分支共享的提交时停止,或者如果没有传递参数则返回所有本地分支;在没有找到常见提交的情况下,它似乎只输出分支的所有提交。

因此,在上面的示例中,show-branch发现show-branch的提示/ head提交包含在m-development中,因此您可以得出整个master的提示1}}分支已合并到m-development

但是,这不是您的输出的样子。对于master的所有行/提交,您的输出在master列中显示一个空格(为了清晰起见,再次缩写):

m-deveopment

根据official Linux Kernel Git documentation for show-branch(强调我的):

  

如果提交在* [master] ! [m-development] -- # skip some output of master for this example * [master~8] * [master~9] + [m-development] + [m-development^] + [m-development~2] + [m-development~3] + [m-development~4] + [m-development~5] *+ [master~10] 分支上,则I-th缩进字符会显示I-th个符号; 否则显示空格

因此,从您的输出中,我们可以得出结论+中的提交尚未合并到m-development

关于查找分支合并状态的其他方法的答案

这不回答master向您展示的问题(我稍后可以解释),但如果你想做的就是弄清楚git show-branch的提交是否已经合并进入m-development,你可以简单地做到

master

这将显示git log --oneline master..m-development 中存在的m-development中尚不存在的所有提交。如果该命令返回空,则master中的所有提交也已存在于m-development中。

如果您想知道master是否已合并到m-development,您还可以

master

如果您在输出中看到git branch --merged master ,则表示它已合并到m-development