Git rebase to较旧的提交

时间:2014-12-31 21:13:23

标签: git

在去年开启和关闭项目之后,我设法让自己陷入了一些混乱。这里发生了什么:

  1. 启动生产版本。我们称之为A

  2. 进行了一些从未完成的重大功能更改。意外地将其提交给master分支机构。代码从未投入生产。我们将此提交称为B

  3. 几个月过去了,我需要在制作时制作一些修补程序。使用" git checkout A ."要恢复为A提交,请进行修补程序更改,然后在B顶部的主分支上提交C

  4. 想要完成提交B的功能。使用" git checkout B -b featureBranch"从提交B获取包含所有未完成功能的新分支。但是,我没有包含C的所有修补程序。

  5. 如果我运行" git rebase master",我的所有C提交修复都会被应用,但我从提交B中丢失了我的更改。

    如何在不丢失C次提交的情况下提交B次提交更改?

1 个答案:

答案 0 :(得分:3)

最简单的方法是挑选(git cherry-pick):

git checkout featureBranch
git cherry-pick C

如果以后featureBranch只是替换当前的master,那将会有效。