2010-10-25 99 views
2

从master,我创建了一个分支A,因为我想添加一个新功能。完成该功能后,我将所有事情做到了这一步。但后来我一直在分支上工作,现在认识到我所做的所有事情,因为在新分支中提交会更合理,称为B,而不是主分支。Git分支工作流困境

现在,我明显地可以将我的更改提交给A,将其拉入主控,然后分支主控,将其称为B,然后继续。但是如果我真的想保持干净,并且宁愿将我最后一次提交的代码从A中提取到master中,然后创建一个分支B,然后引入我现在在A中的未提交的更改,那该怎么办?

+0

只需从A创建分支B并切换到它。您未提交的更改也将在B中,然后将其提交给B. – Calvin 2010-10-25 02:50:17

回答

3

从你在分公司一个什么开始:

git stash   # save your changes away 
git checkout master # check out the master branch 
git merge A   # merge your changes from branch A 
git pull --rebase # This is to get rid of the 'Merged branch A' log entry 
git checkout -b B # create and checkout branch B from current master 
git stash pop  # get back the changes you saved 

,你会在你未提交的更改新创建的支路B。

2

您可以从任意起点合并和创建分支,而不仅仅是某个分支的HEAD。

查看the docs for git branch中与<start-point>相关的选项。

至于在实际开始使用B的时候将A合并到主设备中,git merge command accepts any commit as an argument(同样,不只是分支的HEAD)。回到这个分支的日志中,找到在A上完成工作的点的提交ID,然后开始使用功能B,检出主服务器,然后与此ID合并。