如何从分支中拉出以开始对特定提交进行取回?
假设,我有以下分支:
branch1
和oldbranch1
branch1
是oldbranch1
的回滚版本
假设oldbranch1
具有以下提交:
somebranch
合并到oldbranch1
)在branch1
上:
现在,我想从oldbranch1
获取更新,而跳过commit_3
中的oldbranch1
,因为它包含错误的合并,这些合并删除了commit_2
和commit_1
中的更改
我该怎么办?有什么魔术命令吗?
答案 0 :(得分:1)
跳过提交主要意味着git rebase --interactive
:
tmp
(git branch
oldbranch1
)的顶部建立一个tmp oldbranch1
分支rebase -i branch1
到tmp
分支,重放除commit3
可以删除的每个提交reset --hard
branch1
到新的tmp
头。最后一步的意思是:将branch1
HEAD移动(强制)到tmp
,但是由于rebase仅向branch1
添加了新的(重写)提交,因此您应该能够简单地执行:
git checkout branch1
git merge tmp
这应该使tmp
到branch1
的快速合并,只需将branch1
HEAD移到tmp
所在的位置。
那么简单的git push
(如果以前从未推送过git push -u origin branch1
,则为branch1
就足够了。