如何使用 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 中:
- 双击
warning-fixes
查看。
- 右键单击
staging
。
- 点击
Merge staging into current branch
。
- 双击
staging
查看。
- 右键单击上一个提交,
origin/staging
当前所在的位置。
- 点击
Reset current branch to this commit
。
您不想使用 rebase
的原因是它不仅移动提交,而且还移动分支指针。在这种情况下,尝试将 staging
变基到 warning-fixes
不会有任何效果,因为 staging
尖端的提交已经与 warning-fixes
尖端具有相同的父级。
唯一真正的替代方法是使用 cherry-pick
,但这将(默认情况下)创建一个具有新提交者日期的重复提交。 (如果您有多个提交要移动,这会变得很痛苦。)
我有以下情况:
如何使用 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 中:
- 双击
warning-fixes
查看。 - 右键单击
staging
。 - 点击
Merge staging into current branch
。 - 双击
staging
查看。 - 右键单击上一个提交,
origin/staging
当前所在的位置。 - 点击
Reset current branch to this commit
。
您不想使用 rebase
的原因是它不仅移动提交,而且还移动分支指针。在这种情况下,尝试将 staging
变基到 warning-fixes
不会有任何效果,因为 staging
尖端的提交已经与 warning-fixes
尖端具有相同的父级。
唯一真正的替代方法是使用 cherry-pick
,但这将(默认情况下)创建一个具有新提交者日期的重复提交。 (如果您有多个提交要移动,这会变得很痛苦。)