如果可以通过查看所有冲突来解决所有冲突,如何继续合并?

时间:2017-02-27 07:51:06

标签: git merge

我正在将我的文件合并到远程仓库。

当我推动它时,我会遇到合并冲突。奇怪的是,这些都是我从未在我的分支中触及的所有文件(但这可能是另一篇文章)。

git checkout --theirs到所有这些文件。

然后我git commit

但我不确定接下来该做什么。

如果我git push我只是在同一个文件中遇到另一个合并错误。

git merge --continue对我的git版本不起作用。

有人知道我接下来要做什么吗?

1 个答案:

答案 0 :(得分:3)

@ sajib-khan在你的案例的教科书程序中是正确的 但我觉得这里还有更多。

首先,请注意在Git中,不可能发生 merge 冲突 on push。唯一可能阻止这段历史的案例 你试图更新一个远程分支这样做是你的事实 历史记录不完全包含该远程分支的当前历史记录¹。 换句话说,如果您打算更新的分支结束 这个提交序列

…→C→D→E

你无法用最终的历史记录更新它,如

…→C→D→X→Y→Z

因为您的文章只包含CD,但不包含E。 推

…→C→D→E→X→Y→Z

反而会很好。

所以可能你的问题很简单,就在你忙的时候 合并某人已设法通过更多提交更新远程分支 你自然需要再次将你的工作与远程工作相协调。

  

让我再次强调一下:Git 从不远程合并 - 它只会更新   分支和标签与发送的内容。这样做时,它确保了何时   一个分支更新,它“添加”更新 - 也就是说,   新的更改只会附加到一系列提交中   目前由分支机构指出即将更新。

第二,“怪异”的情况,你只有“非你的”文件被标记为 在冲突中可能表明你正面临着EOL的混乱:比如说,有人 将唯一LF s(Unix样式的行尾标记)更改为CR+LF个序列 (Windows EOL标记)并承诺改变;对你来说这看起来像 整个文件冲突,因为当然,这些文件中的每一行都是 改变。因此,我试着调查是否确实如此。

第三,请不要考虑使用共享远程存储库 作为一些战斗你无论如何都必须赢。如果你有一个神秘的冲突, 就像你一样,停下来调查。

git fetch开始,然后检查已出现的提交 在远程分支上,因为它和你的本地分支 分歧。比如说,如果我们谈论“主人”,那就

git log origin/master ^master

这意味着«告诉我刚出现的“主”分支是什么 “原产地”回购不在我当地的“主”分支上»。 看看那些提交有什么变化。

如果你无法理解冲突的原因,那就找到谁 收回该回购或其承载的项目并将此问题提交给他们 寻求解决方案。

试图避开问题会导致像those这样的案件对每个人都不利。

¹好吧,除了自定义存储库挂钩,它们是运行的程序 由Git在数据交换的特定点,可用于验证传入 如果需要,以任何方式处理数据并使正在进行的推送操作失败。