【问题标题】:git rebase, resolve all conflicts manually [duplicate]git rebase,手动解决所有冲突[重复]
【发布时间】:2021-12-27 11:28:08
【问题描述】:

当我在feature 分支上使用git rebase master 时,很多代码会自动替换为master 中的代码,我只会遇到一个合并冲突。但是这些分支有很大的不同,我预计会有更多的冲突。之前在feature 上创建的文件(master 上不存在)也会被删除。

有没有办法查看所有这些变化,比较它们并选择我需要的那些。然后才完成变基。

【问题讨论】:

  • 你的意思是像交互式合并冲突解决?一些 IDE 有非常好的用户界面(例如 PHPStorm jetbrains.com/help/phpstorm/…
  • 如果你只想选择特定的变更集,rebase 是错误的工具。您可能对git cherry pick 感兴趣。

标签: git


【解决方案1】:

文件没有丢失。你的rebase 还没有达到应用这些文件的地步。您现在只看到一个合并冲突,一旦它解决并继续,可能会弹出更多。

就像在rebase 的上下文中一样,你从源分支的头部开始,你的目标分支的所有提交都被一一应用到它上面。

如果出现合并冲突,rebase 会停止要求您解决合并冲突。您必须在它们一一出现时对其进行修复,然后在每次发生冲突时通过以下方式将受影响的文件标记为已解决来继续 rebase:

git add <resolved file>

然后运行:

git rebase --continue

直到所有的冲突都解决。

在最佳情况下,所有更改都会应用而没有任何冲突。

如有疑问,您可以随时点击

git rebase --abort

回到你开始rebase之前的功能分支。

rebase 期间,没有一种真正的方法可以将您的更改视为一个更改。你可以提前这样做

git diff <branchname>

如果rebase 变得过于复杂,我喜欢使用git merge,因为您可以一次看到所有更改(和冲突),正如您所期望的那样。这对您来说可能更容易解决。

【讨论】:

  • 谢谢,它成功了。我没有意识到 git rebase --continue 进入下一次提交,这就是原因,我想我应该一次得到所有,出于某种原因......
  • @andriejka 如果这解决了您的问题,请随时将答案标记为已接受。这就是说谢谢的stackoverflow方式:) stackoverflow.com/help/someone-answers stackoverflow.com/help/accepted-answer
  • 我没有意识到这一点,只是做了,谢谢
猜你喜欢
  • 2020-03-02
  • 2011-03-31
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-11-11
  • 1970-01-01
  • 2011-12-16
相关资源
最近更新 更多