尝试将分支合并回主服务器,合并时不进行任何更改。该分支具有新的类和文件,但在不带来这些的情况下合并

时间:2015-07-19 21:29:30

标签: git atlassian-sourcetree

我们正在尝试将一个分支合并到master中,每当我们尝试合并而没有任何更改时,就没有什么可以推动的。该分支有几个新的类和文件master不,并且对master没有的现有文件进行了数百次更改。

我们怎样才能让它合并?如果这是一个典型的问题,我们做错了什么呢?

2 个答案:

答案 0 :(得分:1)

您认为"新文件"而git认为可能会有所不同。

想象一下这种情况:你在分支中创建一个文件。您将该分支合并到master。然后使用新提交删除master中的文件。您的历史记录如下:

A  ----------------B - E (delete file) - F (master HEAD)
 \                /
  C (add file) - D - G (branch HEAD)

现在,当您将G合并到F时,会发生什么?不是您的预期,因为您的master历史记录已经包含添加文件的提交。但该文件存在于G中,而不在F中!但从git的角度来看,唯一的" new"更改为G

合并找到您正在合并的分支的最新共同祖先。然后,它将之后的所有更改融合到您当前所在的分支中。在该共同祖先之前所做的任何更改都不会重新合并。你可以看到git认为"合并基础"使用git merge-base命令。在上图中,它是B

我怀疑你实际上并不想要合并。我想你可能想挑选一些改变。樱桃选择将始终应用更改,即使您的历史中已经存在相同的更改。

这是一个常见问题,通常的做法是让更改流向一个方向。如果分支从master拉出,那么它唯一合并回master的时间就是它结束的时间;在最后的反向合并之后,没有新的提交给分支机构。最常见的工作流程不包括两个相互合并的分支,并且双方都在不断发展。

答案 1 :(得分:0)

您必须位于要进行更改的分支中。

在你的主人案例中:

git checkout master
git merge yourBranch

如果您在yourBranch并尝试合并master,那么您什么也得不到,因为您已经拥有了master的所有更改。