2

一个 git noob (或者可能以一种非常简单的方式使用它一段时间),如果这个问题到处都是,对不起。当我运行 show-branch 时,我有以下内容。我试图弄清楚到底发生了什么。

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

  • m-development -> m-development~5 提交的状态如何?据 gitguys 称,它们已被合并;这是否意味着合并到master中?
  • 对于 m-development - m-development~5,它们有一个 +;在 gitguys 上,它说 this 表示 thatCommit is in the branch 和 that a-表示 a Commit is in the branch as a merge。对于+,这是否意味着在 master 或不在?如果是,我很确定它已合并;如果它被合并到 master 中,它不应该显示*在 master 列中吗?

谢谢任何帮助

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$
4

1 回答 1

2

关于回答show-branch

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

原海报问:

m-development[to]m-development~5提交的状态是什么?据 gitguys 称,它们已被合并;这是否意味着合并到master中?

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

*  [master~8]
*  [master~9]
*+ [m-development]

当它发现作为引用传递的所有分支或所有本地分支(如果没有传递参数)共享的提交时,输出show-branch似乎停止;在没有找到共同提交的情况下,它似乎只是输出分支的所有提交。

所以在上面的例子中,show-branch发现 的tip/ headcommitm-development包含在master中,由此可以断定整个m-development分支都被合并到了master

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

* [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]

根据(强调我的)的官方 Linux Kernel Git 文档:show-branch

如果提交在I-th分支上,I-th缩进字符显示一个+符号;否则显示一个空格

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

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

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

git log --oneline master..m-development

这将向您显示所有存在但m-development还不存在的提交master。如果命令返回空,那么所有的提交m-developmentmaster已经存在。

如果你想知道是否m-development已经被合并master,你也可以这样做

git branch --merged master

如果您m-development在输出中看到,这意味着它已合并到master.

于 2013-07-25T21:07:54.643 回答