Git:如何拉动从特定提交开始,直到最新提交跳过1个提交?

时间:2018-12-03 03:29:46

标签: git laravel bitbucket git-pull git-fetch

如何从分支中拉出以开始对特定提交进行取回?

假设,我有以下分支: branch1oldbranch1

branch1oldbranch1的回滚版本

假设oldbranch1具有以下提交:

  • commit_5
  • commit_4
  • commit_3(将somebranch合并到oldbranch1
  • commit_2
  • commit_1

branch1上:

  • commit_2
  • commit_1

现在,我想从oldbranch1获取更新,而跳过commit_3中的oldbranch1,因为它包含错误的合并,这些合并删除了commit_2commit_1中的更改

我该怎么办?有什么魔术命令吗?

1 个答案:

答案 0 :(得分:1)

跳过提交主要意味着git rebase --interactive

  • 您在tmpgit branch oldbranch1)的顶部建立一个tmp oldbranch1分支
  • rebase -i branch1tmp分支,重放除commit3可以删除的每个提交
  • reset --hard branch1到新的tmp头。

最后一步的意思是:将branch1 HEAD移动(强制)到tmp,但是由于rebase仅向branch1添加了新的(重写)提交,因此您应该能够简单地执行:

git checkout branch1
git merge tmp 

这应该使tmpbranch1的快速合并,只需将branch1 HEAD移到tmp所在的位置。

那么简单的git push(如果以前从未推送过git push -u origin branch1,则为branch1就足够了。