在当前事物上覆盖本地补丁

时间:2018-09-19 18:10:15

标签: git

我有一些正在使用的特定于存储库的开发工具,并且正在与其他任务“并行”进行开发-它们不是我当前任务的一部分,但是我正在使用它们来工作,在工作过程中,我可能会改进它们以在此处或此处添加缺少的功能。

我想要的是在我目前正在从事的工作之上“覆盖”这个开发工具补丁,并可能不时切换到提交覆盖。 git是否支持这种工作流程?

1 个答案:

答案 0 :(得分:1)

如果您想在这些开发工具上进行多次提交,我想您可以使用一个单独的分支,该分支将从您的当前工​​作中分支出来,并且当您需要在当前工作的各个分支之间进行切换时,可以重新设置基础


假设您具有以下提交树:

              D --- E < branch `devtools`
             /
A --- B --- C  < branch `currentwork`
       \
        F < branch `otherwork`

如果您已从远程获取了对currentwork的新提交,并想更新devtools分支,只需运行

$ git rebase currentwork

您的提交树如下所示(假设G是您提取的新提交):

                    D' --- E' < branch `devtools`
                   /
A --- B --- C --- G  < branch `currentwork`
       \
        F < branch `otherwork`

如果您需要使用分支机构otherwork中的代码来处理devtools,请运行

$ git rebase currentwork --onto=otherwork

这棵树看起来像:

A --- B --- C  < branch `currentwork`
       \
        F < branch `otherwork`
         \
          D' --- E' < branch `devtools`

您可能还希望将devtools分支推送到远程站点,以免丢失工作,但请记住,在重新设置基准之后,您将不得不强制推送(git push -f),因为更新将不要快进。