维护一个不包含与某个更改相关的提交的分支

时间:2013-02-08 16:28:25

标签: git git-branch

我正在与Git合作开展一个项目,并且我已经开始将开发分解为两个独立的分支。拆分涉及一个简单的更改(使用大写C,以便稍后可以参考它),它会影响代码库的一个独立部分 - 在一个分支中,我希望更改存在;在另一方面,我没有。变更封装在一次提交中。

master分支,这是我完成所有编码的地方(除非出现特定主题)是我想要包含变更的分支。我想创建一个单独的分支,original(或任何你想要称之为的分支),它不包含变更。

master,带有Change的分支,将仍然是主要的首选分支:这是我将继续编码的分支,这是我实际运行的代码的分支。我希望保留original,以防万一我需要一个版本的代码而不需要上面提到的更改。

问题在于:我希望能够将工作从master“合并”到original,但显然,只有与变更无关的提交。

  • 如果我做一个简单的git merge masteroriginal将快进到master,介绍我不想要的更改,对吗?
  • 我不想在original上开发并合并到master,因为original是特例,而不是master
  • 我不想cherry-pick来自master,因为这会使我的发展历史变得混乱。
  • 我可以在develop中引入变更的提交中创建一个新分支master。我可以在此分支上进行与变更无关的提交,并轻松将它们合并到masteroriginal中。但是,如果我在master上进行了一些与变更相关的提交,并希望将它们合并到develop,那么我将再次无法将develop安全地合并到original中,正确?

我想知道您对如何最好地进行的意见。

编辑:我是唯一一个从事这个项目的人,所以不要排除解决方案,因为它可能会使协作环境中的其他程序员陷入困境。我只是在寻找一个易于使用的解决方案,该解决方案可生成干净直观历史记录,可捕获这些不同的开发历史记录。 。如果不存在这样的解决方案,我将接受其中一个完成工作的答案。

2 个答案:

答案 0 :(得分:3)

如何从master分支到原始分支,然后git revert包含您不希望在原始分支中维护的更改的提交。我想git merge会继续工作。只是一些偶数提交的总和将为空。

答案 1 :(得分:1)

我喜欢第四种方法:

我建议您从创建hotfix分支的位置创建另一个original分支。两个分支都不会包含Change个相关提交,您可以安全地将它们合并到masteroriginal分支中。

如果要将Changemaster的某些hotfix相关提交合并,请从hotfix-with-change创建hotfix分支并将其合并到那里。

如果您希望开发一个非Change相关代码,这将影响originalmaster,请在hotfix中执行,并且不要忘记更新{{ 1}}分支。

当您想要开发hotfix-with-change相关代码时,您的分支应该是Change分支,如果您想在master中看到提交,则需要将该提交合并到{ {1}}。

我希望很清楚。