逆转git rebase工作流程

时间:2013-11-30 22:06:22

标签: git git-rebase

我有分支和分段分支。

现在通常的工作流程是主要的新变化然后从暂存我运行

git rebase master

然而,由于我的部署基础架构的性质,我不得不提交一大堆修复,因为我直接调试到临时分支。什么是将这些变化带回主人的正确方法,以便我的未来git rebase能够正常运作。

1 个答案:

答案 0 :(得分:1)

Rebase staging到master。你会有这个:

         |
master - o
         |
         x
         |
         x - staging

你想要这个:

         |
         o
         |
         x
         |
master - x - staging

您只需要执行一项操作。将master设置为指向staging指向的同一提交。有多种方法可以将master设置为与staging相同的提交;这是一个:

git checkout master
git reset staging

简单拉动也应该是等同的。由于master是staging的祖先,因此合并分段将是一个快进,除非您已在某处配置--no-ff,我们可以使用--ff-only检测到它:

git checkout master
git pull --ff-only staging

编辑:如果有提交你不想添加回master,创建一个新的分支,然后使用rebase -i来保持需要像这样返回master的提交:

git checkout staging
git checkout  -b mypics

屈服

         |
master - o
         |
         y
         |
mypics - x - staging

rebase mypics,删除y,创建x':

git rebase -i master
# Drop the lines with commits you don't want to send back to master.

         |
master - o
         | \
         y  x' - mypics
         |
         x - staging

然后将master设置为指向与mypics相同的提交,使用reset或pull,如上所述。 然后放下mypics:

git checkout master
git reset mypics
git branch -D mypics
相关问题