如何使用SourceTree将指定的提交重新绑定到不同的分支?

时间:2016-09-29 11:20:12

标签: git atlassian-sourcetree sourcetree

我有以下情况:

SourceTree Git log output

我如何rebase使用SourceTree从暂存(删除的ProxyFinder ...)上次提交到warning-fixes

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

1 个答案:

答案 0 :(得分:0)

执行此操作的最佳方式如@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
  7. 您不想使用rebase的原因是它不会移动提交,但它也会移动分支指针。在这种情况下,尝试将staging重新定位到warning-fixes将无效,因为staging一角的提交已经与warning-fixes的提示具有相同的父级。

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