2017-01-13 238 views
0

我不明白为什么我的合并更新一个提交...它看起来它更新提交添加颜色,而不是合并主硬币。当我尝试合并这些分支时,Sublime不会弹出。 任何人都可以帮助我?此外,当我输入git commit我有:Git,合并分支git

在分支主 你的分支提前2'提交'原产地/主'。 (使用“混帐推”发布您的本地提交) 没有提交,工作树干净

enter image description here

+0

不是“你的分支与'origin/master'最新'”表示没有东西可以拉动? –

+0

你能给我们一个'git log --graph --decorate'吗?这将显示分行负责人和连接。否则我不确定你的问题是什么?这似乎是一个正常的[快速前进合并](http://stackoverflow.com/questions/2850369/why-does-git-fast-forward-merges-by-default#2850413)(即没有必要的合并因为“硬币”是分支的,所以'主人'没有改变,所以它只是把'主人'移动到硬币的位置。另外,你是否想将'master'合并为'coins'而不是'coins'合并为'master'? – Schwern

回答

1

我不知道你的问题是什么,但认为有两件事情会在这里,你可能不完全理解。

首先,我不认为git merge master coins做你认为它的作用。

git merge master coins说合并mastercoins。它说要将mastercoins合并到当前签出的分支中。这是因为master coins是合并到当前分支的分支列表。 From the docs ...

[混帐合并]集成(因为他们的历史,从当前分支发散的时间)到当前分支从命名提交的变化。

如果master被检出,则它将硬币合并到主。如果coins被检出,则它将master合并成coins。如果有其他东西被检出,你会得到所谓的“章鱼合并”,并且所有三个,master,coins和当前分支合并在一起,可能是一团糟。

现在,您与master合并,因此git merge master coinsgit merge coins相同。你把coins合并为master,我认为这是你想要的,但它可能会变坏。

所以不要使用该语法;它会让你陷入困境,而且通过查看命令历史很难知道实际发生了什么。请使用git checkout branch-to-merge-into; git merge branch-to-merge-from。所以如果你想从硬币合并成主,git checkout master; git merge coins


下一个问题是关于快进合并。这是Git在不需要合并的情况下所做的事情,当时分支机构没有发生分歧。例如,假设您有这...

A - B - C - D - G [master] 
     \ 
      E - F - H [feature] 

由于master具有未在共同与feature(d和G)的变化,它必须合并。因此git checkout master; git merge feature会导致新的合并提交。

A - B - C - D - G - I [master] 
     \  /
      E - F - H [feature] 

但是,如果有对master没有新的提交,你有这个(master位于C指向)。

  [master] 
A - B - C - E - F - H [feature] 

feature据说没有偏离master。不需要合并提交,所以Git不会为其中一个而烦恼。当你做git checkout master; git merge feature它只是移动master到H.

     [master] 
A - B - C - E - F - H [feature] 

的Git能做到这一点,因为“分支”真的只是标签在提交指向。现在masterfeature指向相同的提交。


我建议避免快进,同时合并特性分支,因为它失去了重要的考古资料。稍后有人查看存储库不能说E,F和H都是作为单个分支完成的。

我建议始终将功能分支与git merge --no-ff合并。这迫使Git进行合并提交,并且有人在未来试图找出您的代码可以知道E,F和H都是更大整体的一部分。

A - B - C --------- I [master] 
     \  /
      E - F - H [feature] 

的合并提交,我也给你一个地方来描述分支,并添加东西像一个链接到这个问题/错误/票务描述转移究竟是什么。