我可以将 "git rebase" 表示为一系列精选吗?
Can I represent a "git rebase" as a series of cherry-picks?
似乎"git rebase"有额外的回退逻辑来处理合并失败:
Falling back to patching base and 3-way merge...
它在那里做什么,我需要如何调用我的 cherry-picks 来获得相同的行为?
可能正确的解决方案是不要尝试将 rebase 表示为一系列精选,但如果可能的话会很好,因为我可以使用以下方法处理 rebase 和任意更改集合同样的流程。
大多数 git rebase
命令实际上 do 运行 git cherry-pick
.
您看到的回退来自 git rebase
的一种形式,由于历史原因,不 使用 git cherry-pick
。当您调用 non-interactive git-rebase
and 时使用这种形式,不要使用任何使其使用的选项new-and-improved rebase-invoking 方法。
旧形式通常产生相同的效果。它包括使用 git format-patch
将每个提交变成一个补丁,然后使用 git am --3way
应用所有格式化的补丁。 --3way
选项告诉 git am
如果补丁不能盲目应用,它应该在每个格式化补丁中使用 index
行来实现 git cherry-pick
[=37] 的一部分=]会自动完成。
如果你想让rebase直接使用git cherry-pick
,你可以:
- 提供
-k
选项,或
- 提供
-m
选项,或
- 提供一个
-s <em>策略</em>
选项,或者
- 提供一个
-X <em>extended-option</em>
选项,或者
- 使用交互式变基(
-i
或 --interactive
),或
- 使用
--autosquash
选项,或者
- 使用
-p
或 (Git 2.18+) -r
选项。
似乎"git rebase"有额外的回退逻辑来处理合并失败:
Falling back to patching base and 3-way merge...
它在那里做什么,我需要如何调用我的 cherry-picks 来获得相同的行为?
可能正确的解决方案是不要尝试将 rebase 表示为一系列精选,但如果可能的话会很好,因为我可以使用以下方法处理 rebase 和任意更改集合同样的流程。
大多数 git rebase
命令实际上 do 运行 git cherry-pick
.
您看到的回退来自 git rebase
的一种形式,由于历史原因,不 使用 git cherry-pick
。当您调用 non-interactive git-rebase
and 时使用这种形式,不要使用任何使其使用的选项new-and-improved rebase-invoking 方法。
旧形式通常产生相同的效果。它包括使用 git format-patch
将每个提交变成一个补丁,然后使用 git am --3way
应用所有格式化的补丁。 --3way
选项告诉 git am
如果补丁不能盲目应用,它应该在每个格式化补丁中使用 index
行来实现 git cherry-pick
[=37] 的一部分=]会自动完成。
如果你想让rebase直接使用git cherry-pick
,你可以:
- 提供
-k
选项,或 - 提供
-m
选项,或 - 提供一个
-s <em>策略</em>
选项,或者 - 提供一个
-X <em>extended-option</em>
选项,或者 - 使用交互式变基(
-i
或--interactive
),或 - 使用
--autosquash
选项,或者 - 使用
-p
或 (Git 2.18+)-r
选项。