如何指向同一个提交在Github的两个分支?



假设我有三个分支master, developmentremote release库。

  1. 当对主分支(假设提交ID是ae3r4...)提出PR时,我可以使用Github提供的三个选项之一进行合并
    • 创建合并提交
    • 压缩和合并
    • 重base并合并
  2. 在所有的选项中创建一个新的合并提交主提交的历史记录,我看到一个新的提交ID (233f1d...)。
  3. 当我对master的开发提出PR时,从master a释放新的提交将再次创建

我不想那样。当我合并master中的新提交时,我希望相同的提交存在于开发和发布中。我该怎么做呢?在组织中,如何从不同的分支(如bash脚本或UI)指向相同的提交?因为,无论何时我们将提交合并到master,这都必须发生,所以如果解决方案也考虑到维护部分将会很有帮助。

在所有选项中创建一个新的合并提交

有一个选项可能创建新的合并提交。

请参阅"重新定位和合并您的提交">

当选择Rebase and merge选项,所有来自主题分支(或总分支)的提交都单独添加到基本分支,而不需要合并提交。

使用快进选项合并基于重基提交的拉取请求。

这意味着:如果你首先在本地重置你的PR分支在origin/master的顶部,并强制推送它,那么:

  • aRebase 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可以把东西压扁。