【问题标题】:Git Branch Workflow DilemmaGit 分支工作流程困境
【发布时间】:2010-10-25 02:45:03
【问题描述】:

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

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

【问题讨论】:

  • 只需从 A 创建分支 B,然后切换到它。您未提交的更改也将在 B 中,然后将它们提交给 B。

标签: git git-branch


【解决方案1】:

从你在分支 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 中进行未提交的更改。

【讨论】:

    【解决方案2】:

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

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

    至于在您实际开始处理 B 的位置将 A 合并到 master 中,git merge command accepts any commit as an argument(同样,不仅仅是分支的 HEAD)。回到这个分支的日志,找到在 A 上工作完成并开始在功能 B 上工作的那个点的提交 ID,checkout master,然后与这个 ID 合并。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 2016-05-23
      • 2019-10-26
      • 2015-07-02
      • 1970-01-01
      • 2012-03-05
      • 1970-01-01
      相关资源
      最近更新 更多