2013-04-25 141 views
4

当我创建一个新的分支并对其进行提交时,该怎么办?我没有看到它在我的图中分支。Git图不显示分支

这里是我做的代码:

git init 

git add . 
git commit -a 

... other commits in here 

git checkout -b mynewbranch 

git add . 
git commit -a 

git checkout master 
git merge mynewbranch 

git add . 
git commit -a 

这是我希望在我的脑海看的时候我执行git的日志--graph

* 47926e1 This is a commit back on master 
\ 
    * f3dc827 How come i am not seeing a branch in my tree 
    * 1cd3018 This should be on my new branch 
/
* 47f3716 This is my third commit 
* 878b018 This is my second commit 
* 2db9f83 Initial commit 

但我看到的是:

* 47926e1 This is a commit back on master 
* f3dc827 How come i am not seeing a branch in my tree 
* 1cd3018 This should be on my new branch 
* 47f3716 This is my third commit 
* 878b018 This is my second commit 
* 2db9f83 Initial commit 

我不理解什么吗?

+2

由于没有其他提交,git正在分支上快速前进。尝试git merge --no-ff mynewbranch将其记录为合并关闭该分支 – Doon 2013-04-25 14:29:15

+0

这是最佳实践方式,还是仅仅为了美观地显示它们是独立的分支? – 2013-04-25 14:34:19

+0

它取决于你,以及你想如何看树。如果你认为这项工作是在该分支完成是很重要的。如果你这样做了一吨,你的提交历史充满了分支,并且可能很难遵循。最佳实践通常由您正在使用的团队以及他们想要如何使用git来定义。 – Doon 2013-04-25 14:39:05

回答

4

如果您在使用mynewbranch时没有提交任务,那么您的历史记录将如您所示。在这种情况下,不需要实际合并;合并后的主人与我的新朋友一样。如果是这种情况,git会(默认情况下)执行所谓的快进合并;主分支指针只是更新为与合并提示相同的提交。这通常会导致更简单的提交历史记录,更容易处理,尤其是在远程存储库中正在进行工作的情况下。

如果你想强制合并记录为合并在git中,你可以在git merge上使用--no-ff选项。

在git中,通常认为在可能的情况下避免合并是一种很好的做法。

+0

谢谢你的出色解释。我的问题是,使用非快进选项还是让git决定最佳做法? – 2013-04-25 14:37:33

+0

关于快速向前和非向前快速合并,我已经看到有人提出支持两者的论据([Git flow](http://nvie.com/posts/a-successful-git-branching-model/)),例如,建议不要快进)。 – 2013-04-25 14:40:59

+0

通常认为最佳做法是尽可能保持版本历史尽可能简单,这意味着使用快进。 --no-ff选项用于支持需要显式分支和合并跟踪的方法。 – antlersoft 2013-04-25 14:46:51