在不同分支中开发功能,但使用累积的代码更改?

时间:2015-11-25 08:58:15

标签: git github version-control

我了解最好在单独的分支中开发每个功能和错误修复,以使存储库所有者更容易评估拉取请求。

我的工作流程是我

  • 结帐主分行
  • 创建新分支
  • 开发功能
  • 提交功能
  • 拉请求功能
  • 再次检查主分支并冲洗并重复下一个功能

这很好用。但是,如果我在处理第二,第三或第四个功能时,想要使用具有以前分支累积更改的代码库,该怎么办?但是当我提交这个分支时,我不想包含这些更改。

可能是第一个分支修复了已破坏的东西。当我在第二个分支上工作时,我需要使用前一个分支中累积的代码库,但是当我提交第二个分支时,我只想提交我正在第二个分支中进行的更改。

这种工作流程是否有意义?
我如何使用git这样工作?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到:

  • Patches

    补丁是每次提交生成的差异 换句话说:补丁将每个提交中的更改包含为单独的diff文件 生成补丁后,您可以将它们应用于您希望的任何给定分支。

    git format-patch HEAD~X # generate the last X commits as patch
    

现在您将拥有包含提交代码的单独文件,您可以更改分支和apply补丁

    git checkout <new branch>
    git apply *.patch
    #or:
    git am *.patch
  • cherry-pick

    cherry-pick只是为任何分支选择任何所需的提交 由于git使用提交的方式没有附加它们,你只需选择它们到任何给定的分支。
    您可以按commit使用多个cherry-pick

    git checkout <branch name>
    git cherry-pick commit1 commit2 commit3 ...
    

这将导致&#34;导入&#34;希望提交到当前分支。

相关问题