Git 尝试将分支合并回主分支,合并时不做任何更改。该分支有新的类和文件,但合并时不带这些类和文件

Git 尝试将分支合并回主分支,合并时不做任何更改。该分支有新的类和文件,但合并时不带这些类和文件,git,atlassian-sourcetree,Git,Atlassian Sourcetree,我们正在尝试将一个分支合并回主分支,无论何时,只要我们尝试合并它而不做任何更改,就没有什么可推动的。该分支有几个新的类和master没有的文件,以及对master没有的现有文件的数百个更改 我们怎样才能让它合并?如果这是一个典型的问题,我们做错了什么导致了这一问题?您必须在希望带来更改的分支中 在您的master中: git checkout master git merge yourBranch 如果您在您的分支中尝试在master中合并,您将一无所获,因为您已经拥有master的所有更改。

我们正在尝试将一个分支合并回主分支,无论何时,只要我们尝试合并它而不做任何更改,就没有什么可推动的。该分支有几个新的类和master没有的文件,以及对master没有的现有文件的数百个更改


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

您必须在希望带来更改的分支中

在您的master中:

git checkout master
git merge yourBranch
如果您在您的分支中尝试在master中合并,您将一无所获,因为您已经拥有master的所有更改。

您认为的“新文件”和git认为的可能有所不同

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

A ----------------B - E (delete file) - F (master HEAD) \ / C (add file) - D - G (branch HEAD) A---------B-E(删除文件)-F(主文件) \ / C(添加文件)-D-G(分支机构负责人) 现在,当您将
G
合并到
F
中时,会发生什么?不是您所期望的,因为您的
主文件
历史记录已经包含添加文件的提交。但是文件存在于
G
中,而不存在于
F
中!但从git的角度来看,唯一的“新”变化是
G

合并查找要合并的分支的最新共同祖先。然后,它会将此后的所有更改融合到您当前所在的分支中。在该共同祖先之前所做的任何更改都不会重新合并。您可以使用
gitmergebase
命令查看git认为的“mergebase”。在上图中,它是
B

我怀疑你实际上不想合并,这里。我想你可能想挑选一些变化。即使在你的历史中已经有一个相同的变化,一个樱桃选择总是会应用一个变化


这是一个常见问题,通常的做法是使更改流向一个方向。如果分支从
master
提取,那么它唯一合并回
master
的时间就是它结束时;在最后的反向合并之后,不会对分支进行新的提交。大多数常见的工作流不包括两个分支合并为另一个分支,并且在两侧都有正在进行的开发。

如果它们是新文件,您需要明确地添加它们。新文件不太重要,如果需要,我可以复制/粘贴它们(但是这些文件已经存在于分支上)。对现有类的所有更改都不会合并,对几十个类的数百个更改我需要尝试查找并粘贴。这是一项非常艰巨的任务,而且可能容易出错。在尝试合并之前,您是否在分支上运行了“git commit”?是的。我得到“你的分支是最新的‘origin/NewAttacking’。无需提交,工作目录清理”嗨,“git diff——name status master..theOtherBranch”的结果是什么?是的,这就是我一直在尝试的。我是大师,试图将我的分支并入其中。它没有合并,我只是与其他5个分支合并,因为我们正在合并远程,现在我们的任务已经完成。您没有收到任何错误或警告消息吗?打开gitk,看看你的历史中是否有奇怪的东西。