Git Branch Workflow Dilemma

时间:2010-10-25 02:45:04

标签: git git-branch

我从master那里创建了一个分支A,因为我想添加一个新功能。完成此功能后,我将所有内容都提交到了这一点。但后来我继续在分支机构工作,现在实现了我所做的所有事情,因为那个提交在一个新的分支中更具逻辑意义,称之为B,离开主人。

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

2 个答案:

答案 0 :(得分:3)

从分支A中的内容开始:

 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中进行未经修改的更改。

答案 1 :(得分:2)

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

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

至于在实际开始处理B的位置将A合并到master中,git merge command accepts any commit as an argument(再次,不仅仅是分支的HEAD)。返回到该分支的日志,找到A上的工作点的提交ID,然后开始处理功能B,checkout master,然后合并此ID。