2

在 master 中,我创建了一个分支 A,因为我想添加一个新功能。完成该功能后,我承诺了到目前为止的所有内容。但后来我继续在分支上工作,现在意识到我所做的所有事情,因为该提交在新分支中更合乎逻辑,称之为 B,脱离 master。

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

4

2 回答 2

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

于 2010-10-25T02:50:23.387 回答
2

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

查看文档中<start-point>与.git branch

至于在您实际开始处理 B 时将 A 合并到 master 中,该git merge命令接受任何提交作为参数(同样,不仅仅是分支的 HEAD)。回到这个分支的日志,找到在 A 上的工作完成并开始在特性 B 上工作的点的提交 ID,checkout master,然后与这个 ID 合并。

于 2010-10-25T02:51:10.350 回答