14

为什么当我创建一个新分支并对其进行提交时,我没有在我的图表中看到它分支。

这是我正在做的代码:

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 log --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

我不明白什么吗?

4

1 回答 1

18

如果您在处理 mynewbranch 时没有提交到 master,您的历史记录将与您显示的一样。在这种情况下,不需要实际的合并;合并的 master 与 mynewbranch 的提示相同。如果是这种情况,git 将(默认情况下)执行所谓的快进合并;master 的分支指针刚刚更新为与合并提示相同的提交。这通常会导致更简单的提交历史记录更易于使用,特别是如果工作也在远程存储库中进行。

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

在 git 中,通常认为最好的做法是尽可能避免合并。

于 2013-04-25T14:35:18.180 回答