Git 将子文件合并回父文件...两个文件冲突

Git merge child back to parent... both files conflict

所以我开始从 master 分支到一个新分支:

git checkout -b branchA

branchA 中,我分支到 branchB,因为我已经想要 branchA 中的更改。

当我完成 branchB 后,我想将更改折叠回 branchA。我发现我在 branchA 中触及但在 branchB 中未触及的所有文件现在都与自身发生冲突 - 在 branchA 中更改的行现在显示为冲突我从 branchA.

做了一个 git merge branchB

合并这些更改的正确方法是什么?

对了,我已经push到远程了,不知道这里rebase能不能用

在你之后[​​=23=]

git checkout -b branchA

您可能在 branchA 签出时进行了一些更改。当你完成后,你可能做了类似

的事情
git checkout -b branchB

现在您已经签出 branchB。您对 branchB 进行了更多更改。当您在 branchB 上完成任何您想做的事情时,您想要将这些更改合并到 branchA。所以你

git checkout branchA
git merge branchB

如果您有任何合并冲突,它们会立即出现。但是除非其他人对 branchA 进行了更改(或者您对 branchA 进行了更改),否则不会有任何冲突。

到目前为止,分支只存在于您本地的机器上。如果你想把它们推送到你的远程服务器上,你会做

git push origin branchA //Assuming you have branchA checked out on your local

如果您想将 branchB 推送到远程服务器,您可以签出 branchB 并使用相同的命令。

从您提到的情况来看,您的观察结果是 Git 的预期行为。在 创建 branchB 之后,您对 branchA 中的文件进行了一些更改,然后您尝试将 branchB 合并到 branchA。合并冲突的根源是这些文件中的每一个都有两个版本冲突,一个来自 branchB,另一个来自 branchA.

通常,您会在编辑器或 IDE 中打开有问题的文件,然后查找这样的冲突标记:

<<<<<<< HEAD
version in branchA
=======
version in branchB
>>>>>>>

选择正确的版本,然后提交文件。由于您已推送,请确认branchA中的文件版本是否是您真正想要的。

啊抱歉。事实证明,branchAbranchB 以来发生了大量变化。因此,所有这些冲突。谢谢大家