3

我正在使用 Git 进行一个项目,并且已经到了想将开发分成两个独立分支的地步。拆分涉及一个简单的变更(使用大写的 C,以便我稍后可以参考),它影响代码库的一个孤立部分——在一个分支中,我希望变更存在;另一方面,我没有。更改被封装在一个提交中。

分支是我进行所有编码的master地方(除非出现特定主题)是我想要包含更改的分支。我想创建一个original不包含更改的单独分支(或任何您想称呼的分支)。

master,带有更改的分支,将仍然是主要的首选分支:这是我将继续编码的分支,也是我将实际运行其代码的分支。我想保留original以防我以后需要一个没有上述更改的代码版本。

这就是问题所在:我希望能够“合并”未来的工作masteroriginal但显然,只有与变更无关的提交。

  • 如果我做一个简单的git merge masteroriginal会快进到master,引入我不想要的变化,对吧?
  • 我不想发展original和合并到master,因为original是特例,不是master.
  • 我不想cherry-pickfrom master,因为那会弄乱我的发展历史。
  • 我可以develop从引入更改的提交中创建一个新分支master. 我可以在这个分支上进行非变更相关的提交,并轻松地将它们合并到masterororiginal中。但是,如果我在上进行一些与更改相关的提交master并希望将它们合并到develop中,那么我将再次无法安全地合并developoriginal中,对吗?

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

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

4

3 回答 3

3

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

于 2013-02-08T16:37:57.703 回答
1

我喜欢第四种方法:

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

如果您想在with处合并一些Change相关的提交,则从那里创建分支并将其合并到那里。masterhotfixhotfix-with-changehotfix

当你想开发一个不Change相关的代码时,它会生效,original并且不要忘记更新分支。masterhotfixhotfix-with-change

当您想开发Change相关代码时,您的分支应该是master分支,如果您想在 中查看该提交original,则需要将该提交与hotfix-with-change.

我希望它很清楚。

于 2013-02-08T16:50:25.853 回答
0

这就是问题所在:我希望能够在未来将主作品“合并”为原始作品,但显然,只有与变更无关的提交。

我不想从大师那里挑选,因为那会弄乱我的发展历史。

如果您不想从 master 合并,又不想挑剔,那么git rebase这是您唯一的选择。

A--B--C  (master)
       \
        X--Y--Z  (original)

D E F上游变化在哪里

A--B--C--D--E--F
       \
        X--Y--Z

X Y Z撤消“坏”提交。

A--B--C--D--E--F
                 \
                  X'--Y'--Z'

参考

于 2013-02-08T16:52:34.533 回答