git - 如何使用 SourceTree 将指定的提交 rebase 到不同的分支?

标签 git atlassian-sourcetree sourcetree

我有以下情况:

SourceTree Git log output

如何使用 SourceTree 将上次提交(已删除 ProxyFinder...)rebasewarning-fixes 上?

一种方法是将 staging merge 到 warning-fixes 中,然后将 staging 重置为之前的提交,但这听起来像是令人讨厌的解决方法。

最佳答案

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

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

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

在 SourceTree 中:

  1. 双击warning-fixes进行查看。
  2. 右键单击暂存
  3. 点击将暂存 merge 到当前分支
  4. 双击staging进行查看。
  5. 右键单击上一个提交,即 origin/staging 当前所在的位置。
  6. 点击将当前分支重置为此提交

您不想使用rebase的原因是它不仅会移动提交,还会移动分支指针。在这种情况下,尝试将 staging 重新设置为 warning-fixes 不会有任何效果,因为 staging 顶端的提交已经具有相同的内容父级作为警告修复的提示。

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

关于git - 如何使用 SourceTree 将指定的提交 rebase 到不同的分支?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39768853/

相关文章:

git - 你如何用sourcetree恢复?

Git SourceTree pull 本地分支时有 "forgotten"远程分支要 pull

git - 如何忽略未跟踪文件中的 .DS_Store?

git - git 中的 svn revert 等价物是什么?

git - 忽略 Sourcetree 中已提交的文件

github - 如何从 Gitlab 的提交表中删除任何提交?

git - PhpStorm 无法推送到 git 存储库

Git 产生 "BUG: There are unmerged index entries"

git - merge 父分支到子分支

git - SourceTree: pull 列表的远程分支为空