在Github上把开发版合并为主版的官方方法是什么?

3okqufwl  于 2023-01-24  发布在  Git
关注(0)|答案(1)|浏览(155)

我有一个master分支和一个develop分支,我的master分支是在生产环境中运行的代码,develop分支是在开发环境中运行的代码,几个特性分支已经合并到develop中,现在我正在尝试将我的develop分支合并到master中,下面是我当前的过程:

但是当我查看PR时,它显示了很多已经存在于master中的旧提交。有时候我也不得不处理一些没有意义的合并冲突(比如版本号增加了一,但由于某种原因我遇到了合并冲突)。在我合并之后,一切看起来都很好,但这让我觉得我做得不对。正确的方法是什么?

umuewwlo

umuewwlo1#

我敢打赌,当你把东西合并到master中时,你并没有创建真正的合并。让我解释一下。假设你有这些分支:

*   third commit in master (master)
| * third commit in develop (develop)
| * another commit in develop
| * a commit in develop
* | another commit in master
* | a commit in master
|/
* initial commit

假设我们将develop合并(真正的合并)为master

* Merge develop into master (master)
|\
* | third commit in master
| * third commit in develop (develop)
| * another commit in develop
| * a commit in develop
* | another commit in master
* | a commit in master
|/
* initial commit

现在假设在develop中完成了更多的工作:

*   Something else in master (master)
| * 5th commit in develop (develop)
| * 4th commit in develop
* | Merge develop into master
|\|
* | third commit in master
| * third commit in develop
| * another commit in develop
| * a commit in develop
* | another commit in master
* | a commit in master
|/
* initial commit

如果你让git把develop合并到master中,git需要(粗略地)寻找它们的最新共同祖先....两个分支中出现的最新提交是什么?third commit in develop,对吗?因此,git在合并时需要考虑的就是这棵树:

*   Something else in master (master)
| * 5th commit in develop (develop)
| * 4th commit in develop
* | Merge develop into master
 \|
  * third commit in develop

但是如果你在合并的时候做了 * squashes * 会发生什么呢?让我们看看如果你做了squashes,* first * merge的结果:

* Merge develop into master (master)
*   third commit in master
| * third commit in develop (develop)
| * another commit in develop
| * a commit in develop
* | another commit in master
* | a commit in master
|/
* initial commit

第一次合并和真正的合并之间的树 * 几乎 * 是相同的...... * 但是 * 您可以看到,与第一次合并不同的是,没有关系(假设)合并提交和源分支(develop)...而这是一个交易破坏者,因为,即使develop分支 * 不 * 移动,如果你试图再次合并,你能看到最新的共同祖先是什么吗?2这就是为什么你仍然看到一些提交被合并到新的PR中。
底线:当合并到master的东西,* 不要挤压 *,除非你知道你在做什么。
经验法则是,如果你正在合并长时间运行的分支,你 * 不要 * 压缩。一个在你合并的那一刻即将死亡的特征分支可以被压缩合并。

相关问题