繁体   English   中英

如何成功保持主分支和开发分支同步? GIT

[英]How to successfully keep master and development branches in sync? GIT

我喜欢在我的开发分支上进行开发,然后在我准备投入生产时合并到master。 只要我不向主分支提交任何内容,一切顺利。

但是,我遇到过一些情况,我已经向主分支提交了与开发分支上已更改的内容冲突的内容。 当我将开发分支合并到主服务器中时,我必须解决冲突。 没什么大不了的,但是为了确保开发分支在主分支中具有所有内容(确保开发是最新的)我合并了主分支并最终必须再次解决冲突。

我听说变革通常很糟糕,特别是对于你公开推出的东西。

有没有更好的方法来管理这种类型的设置?

定期从主服务器合并到您的开发分支,然后解决任何冲突。 (如果你经常这样做,冲突通常很小。)

当合并回主人的时候,发展不应该发生冲突。

我认为你可能会在这里遇到一些误解,这些误解对你的影响大于技术上的错误。

首先,您通常不应直接提交到主分支。 从你描述你的情况的方式来看,我不确定这是否正在发生,但如果是,请尽量不这样做。

如果您发现某些内容无法完全合并到master中,则不应尝试将问题解决到master本身。 相反,您应该在功能分支上修复问题。 一旦你解决了那里的问题,你就可以干净地合并到主人。

就rebase而言,在你推送到远程存储库之前使用rebase是完全没问题的。 一旦你把东西推到了远程仓库,你就不想变硬了,因为那时你正在为别人弄乱历史,而git无法真正解决这个问题。 所以不要害怕变质,只知道何时使用它以及何时不使用它。

您可以在这里使用变基的一种方法(再次,假设您没有远程推送有问题的分支)来帮助解决您的问题,就是将无法干净地合并到主服务器中的功能分支转换为主服务器。 这将强制您解决该分支上的问题。 一旦解决了,合并到master中应该是微不足道的(除非master在此期间再次被更改)并且你可以干净地合并到master中。

有很多可用于git的教程,他们也有一些很好的代码示例也可以提供帮助。 这是更经典的一个,我相信这里描述的工作流程运作良好。 http://nvie.com/posts/a-successful-git-branching-model/

请注意我不支持名为'git flow'的bash脚本集,它试图在那里半自动化工作流程(当我们尝试这些脚本时,这些脚本对我们来说效果不好),但是那里描述的工作流本身效果很好。

我这样做的方式是反过来:

  1. 将master合并到dev
  2. 在此之后合并dev to master

在合并时解决所有冲突。

虽然git在合并和处理分支时非常出色,但我认为除了使用3向差异/合并工具进行手动,繁琐的工作之外,我认为没有快速解决冲突的方法。

此外,它有助于做@cHao在下面的答案中所说的 - 经常合并,合并小,你几乎不会有大的冲突合并情况。

从我所知,开发是所有新事物发生的地方。 所以,如果是这种情况,请从开发(功能分支)开始分支。 在那个分支上工作。 当你完成后,只需将develop合并到你的功能分支中,以确保它是最新的。 然后,签出开发分支并将您的功能分支合并到其中。 当团队中的人继续向开发分支添加功能时,管理员会在某些时候好像okay, we're releasing ,所以在那时你将把master合并到develop中(只是因为有人做了一个流氓提交)在主人)然后结帐主和合并发展到它。

希望没有人直接承诺发展或掌握。 这两个应该只合并到。 另外,我希望您在开发功能时和合并后进行测试。

rebase而言,是的,他们说在你分享你的分支后不要这样做。 所以在这种情况下你不会在开发分支上这样做,因为它是共享的。

我做

git checkout master
git reset --hard dev

所以主人变得完全开发。 如果要在master上提交修补程序,请不要忘记重新设置dev。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM