只提交阶段/索引,忽略冲突

时间:2014-11-12 11:21:55

标签: git git-cherry-pick git-merge-conflict

我有一个巨大的提交,我选择了。挑选现在会产生一系列冲突(在工作树中)。 现在我想提交所有暂存(成功合并)的更改,而不必解决所有冲突。

天真我一直认为,提交只会在舞台上发挥作用,但是当我尝试时,我得到的信息是,如果不解决冲突我就无法提交。

有人可以向我解释发生了什么以及如何解决它。

1 个答案:

答案 0 :(得分:0)

您必须解决冲突,因为只有当git无法自动合并分支时才会发生冲突。它们主要发生在2个单独的提交中修改同一行时。

示例

主分支:

L1. git
L2. is
L3. awesome

分支A和B从主分支

分支出来

提交x应用于分支A

L1. git
L2. is not
L3. awesome

DIFF

 git
-is
+is not
 awesome

提交y应用于分支B

L1. git
L2. isn't
L3. awesome

DIFF

 git
-is
+isn't
 awesome

当您合并分支A 并尝试将分支B 之后合并到master中时,git无法决定为L2添加什么。在解决冲突的同时,你必须做出决定。

如何解决冲突

最简单的解决方法是选择要保留的文件版本。

选择当前分支(HEAD)上的文件版本

git checkout --ours <filename>

选择另一个分支上的文件版本(您从中拉出/摘取的分支。可能是远程分支):

git checkout --theirs <filename>

或者您可以逐个编辑文件并删除冲突标记(<<<<<<<=======>>>>>>>)并选择要使用的版本

之后您需要通过执行以下操作将其标记为已解决:

git add <filename>

提示:您可以使用.作为文件名来选择当前目录下的所有文件。