如何使用 SourceTree 将指定的提交变基到不同的分支?

How to rebase specified commit to different branch using SourceTree?

我有以下情况:

如何使用 SourceTree rebase 从暂存(删除 ProxyFinder...)最后提交到 warning-fixes

一种方法是将 staging 合并到 warning-fixes 中,然后将 staging 重置为之前的提交,但这听起来像是一个糟糕的解决方法。

最好的方法如 @ElpieKay's comment 中所述,在您的问题末尾:将 staging 合并到 warning-fixes 中,然后将 staging 重置为之前的提交。

要从命令行执行此操作,请执行:

git checkout warning-fixes
git merge staging
git checkout staging
git reset --hard HEAD^

在 SourceTree 中:

  1. 双击warning-fixes查看。
  2. 右键单击 staging
  3. 点击Merge staging into current branch
  4. 双击staging查看。
  5. 右键单击上一个提交,origin/staging 当前所在的位置。
  6. 点击Reset current branch to this commit

您不想使用 rebase 的原因是它不仅移动提交,而且还移动分支指针。在这种情况下,尝试将 staging 变基到 warning-fixes 不会有任何效果,因为 staging 尖端的提交已经与 warning-fixes 尖端具有相同的父级。

唯一真正的替代方法是使用 cherry-pick,但这将(默认情况下)创建一个具有新提交者日期的重复提交。 (如果您有多个提交要移动,这会变得很痛苦。)