我可以将“ git rebase”表示为一系列的樱桃小食吗?

Chr*_*tze 1 git git-rebase git-cherry-pick

似乎“ git rebase”具有其他后备逻辑来处理合并失败:

Falling back to patching base and 3-way merge...
Run Code Online (Sandbox Code Playgroud)

它在那里正在做什么,我将如何调用我的樱桃小贴士来获得相同的行为?

可能正确的解决方案是不尝试将重新基准表示为一系列的小问题,但如果可能的话,那将是很好的,因为我可以使用相同的流程处理重新基准和任意更改集合。

tor*_*rek 5

git rebase实际上,大多数命令可以运行git cherry-pick

您看到的后备广告是从一种形式发生的git rebase,由于历史原因,它没有使用git cherry-pick。当您调用交互式git-rebase 并且不使用任何使其使用新的和改进的rebase-invoking方法的选项时,将使用该格式。

旧形式通常会产生相同的效果。它包括git format-patch用来将每个提交变成补丁,然后git am --3way用来应用所有格式化的补丁。该--3way选项告诉git am,如果不能盲目套用补丁,它应该使用的index线路在每个格式化补丁来实现的哪一部分git cherry-pick 已经自动完成。

如果您想git cherry-pick直接使用变基,则可以:

  • 提供-k选项,或者
  • 提供-m选项,或者
  • 提供一个选项,或-s strategy
  • 提供一个选项,或-X extended-option
  • 使用互动式变基(-i--interactive),或
  • 使用该--autosquash选项,或
  • 使用-p或(Git 2.18+)-r选项。