Git 合并冲突已解决,没有需要提交的更改

Dan*_*iaz 12 git git-merge git-merge-conflict

我有一个从开发延伸出来的“featurex”分支。当我提出拉取请求来开发时,我会遇到冲突。我正在尝试按以下几行修复它:

  1. git checkout 功能x
  2. git mergedevelop(和我有冲突)
  3. 我修复了冲突(保留我的分支代码)
  4. 我上演冲突的解决方案(舞台上有任何变化)
  5. 我想提交,但没有需要提交的更改

可能是我的流程不对...

小智 18

答案是git merge --continue然后git push

例如,您解决了冲突,那么您当然没有任何要提交的内容,因此您只需执行 a git merge --continue,它就会进行空提交。

其他答案说了一些关于git rebase但我想如果你已经提交到远程分支,那么 rebase 不是一个选项,因为你随后被迫重写历史记录。所以你被迫使用git push --force这是一个不好的模式。我想对于任何遵循西斯黑暗力量实践的人来说这都是可以的。


tor*_*rek 4

有时会发生这样的情况,在解决合并冲突的同时,最终的结果是“不进行任何更改”。

\n\n

例如,考虑以下文本文件的行:

\n\n
Balls come in several colors.  Red is the most popular.\n
Run Code Online (Sandbox Code Playgroud)\n\n

这就是文件在某些​​提交中出现的方式。现在您和您的同事都获得了此提交并开始工作。与此同时,销售人员告诉您,事实上,绿色是最受欢迎的。

\n\n

你的同事是英国人,他这样做了:

\n\n
Balls come in several colours.  Green is the most popular.\n
Run Code Online (Sandbox Code Playgroud)\n\n

你这样做了:

\n\n
Balls come in several colors.  Green is the most popular.\n
Run Code Online (Sandbox Code Playgroud)\n\n

你们都承诺了,但你的同事git push在你之前就发生了git push。然后,当您运行有关推送是非快进的错误时git push,您获得了同事的提交\xe2\x80\x94,它更改了单词的拼写修复了最流行的声明\ xe2\x80\x94 然后你让 Git 尝试使用git rebase.xe2\x80\x94 将你的更改与他们的更改结合起来。

\n\n

当然,您可以选择将拼写切换回color但假设您选择保留英式拼写。在这种情况下,此合并冲突的正确解决方案是删除对文件的更改。

\n\n

如果这是整个提交唯一的更改,那么现在正确的解决方案是完全删除您的提交。该命令将为您提供此选项!您必须简单地通知 Git 出现这种情况,方法是:git rebase

\n\n
git rebase --skip\n
Run Code Online (Sandbox Code Playgroud)\n\n

使用之前请确保这是正确的选项。

\n\n
\n

可能是我的流程不对...

\n
\n\n

是否变基或合并既是个人也是团队的决定。一种尺寸并不适合这里的所有情况。只有您和您的同事/团队可以决定这一点。

\n\n

如果您选择使用 将您的提交与他们的提交合并git merge,您将无法选择完全放弃您的提交。合并添加新的提交,而不是复制现有的提交;现有的提交全部保留,因此无法删除提交。但是,如果您正在进行真正的合并,而不是重新设置基准,则不会遇到此问题:git merge --continuegit commit\xe2\x80\x94 任一命令在此时执行相同的操作\xe2\x80\x94 将进行新的合并提交,作为其快照,它将具有您为此合并冲突选择的任何解决方案。

\n