我正在与Git合作开展一个项目,并且我已经开始将开发分解为两个独立的分支。拆分涉及一个简单的更改(使用大写C,以便稍后可以参考它),它会影响代码库的一个独立部分 - 在一个分支中,我希望更改存在;在另一方面,我没有。变更封装在一次提交中。
master
分支,这是我完成所有编码的地方(除非出现特定主题)是我想要包含变更的分支。我想创建一个单独的分支,original
(或任何你想要称之为的分支),它不包含变更。
master
,带有Change的分支,将仍然是主要的首选分支:这是我将继续编码的分支,这是我实际运行的代码的分支。我希望保留original
,以防万一我需要一个版本的代码而不需要上面提到的更改。
问题在于:我希望能够将工作从master
“合并”到original
,但显然,只有与变更无关的提交。
git merge master
,original
将快进到master
,介绍我不想要的更改,对吗?original
上开发并合并到master
,因为original
是特例,而不是master
。cherry-pick
来自master
,因为这会使我的发展历史变得混乱。develop
中引入变更的提交中创建一个新分支master
。我可以在此分支上进行与变更无关的提交,并轻松将它们合并到master
或original
中。但是,如果我在master
上进行了一些与变更相关的提交,并希望将它们合并到develop
,那么我将再次无法将develop
安全地合并到original
中,正确?我想知道您对如何最好地进行的意见。
编辑:我是唯一一个从事这个项目的人,所以不要排除解决方案,因为它可能会使协作环境中的其他程序员陷入困境。我只是在寻找一个易于使用的解决方案,该解决方案可生成干净,直观历史记录,可捕获这些不同的开发历史记录。 。如果不存在这样的解决方案,我将接受其中一个完成工作的答案。答案 0 :(得分:3)
如何从master分支到原始分支,然后git revert
包含您不希望在原始分支中维护的更改的提交。我想git merge
会继续工作。只是一些偶数提交的总和将为空。
答案 1 :(得分:1)
我喜欢第四种方法:
我建议您从创建hotfix
分支的位置创建另一个original
分支。两个分支都不会包含Change
个相关提交,您可以安全地将它们合并到master
和original
分支中。
如果要将Change
与master
的某些hotfix
相关提交合并,请从hotfix-with-change
创建hotfix
分支并将其合并到那里。
如果您希望开发一个非Change
相关代码,这将影响original
和master
,请在hotfix
中执行,并且不要忘记更新{{ 1}}分支。
当您想要开发hotfix-with-change
相关代码时,您的分支应该是Change
分支,如果您想在master
中看到提交,则需要将该提交合并到{ {1}}。
我希望很清楚。