假设我有三个分支master, development和remote release库。
- 当对主分支(假设提交ID是
ae3r4...
)提出PR时,我可以使用Github提供的三个选项之一进行合并- 创建合并提交
- 压缩和合并
- 重base并合并
- 在所有的选项中创建一个新的合并提交主提交的历史记录,我看到一个新的提交ID (
233f1d...
)。 - 当我对master的开发提出PR时,从master a释放新的提交将再次创建
我不想那样。当我合并master中的新提交时,我希望相同的提交存在于开发和发布中。我该怎么做呢?在组织中,如何从不同的分支(如bash脚本或UI)指向相同的提交?因为,无论何时我们将提交合并到master,这都必须发生,所以如果解决方案也考虑到维护部分将会很有帮助。
在所有选项中创建一个新的合并提交
有一个选项可能不创建新的合并提交。
请参阅"重新定位和合并您的提交">
当选择
Rebase and merge
选项,所有来自主题分支(或总分支)的提交都单独添加到基本分支,而不需要合并提交。使用快进选项合并基于重基提交的拉取请求。
这意味着:如果你首先在本地重置你的PR分支在origin/master的顶部,并强制推送它,那么:
- a
Rebase and merge
将不生成新的提交。 - 你的master HEAD和PR HEAD是一样的。
但是这种方法适用于topic
分支,而不适用于许多用于集成的分支(如"develop
")。
这将是从主题分支到master
的PR:将master
合并到其他分支(PR或非PR)不是最佳实践。
这就是为什么我推荐使用gitworkflow
(一个词):更多信息见rocketraman/gitworkflow
。
两个分支可以指向相同的提交。然而,在dev
的情况下,分支不共享相同的历史记录,所以你必须告诉Git,基本上可以压缩现有的dev
分支。
这将把你的dev
分支指向你的本地主机所指向的任何地方:
git push origin +master:dev
请记住,它将压缩任何dev在服务器上指向的内容。+
符号告诉Git可以把东西压扁。