将几个提交合并为一个提交合并到其他分支

时间:2012-07-26 14:34:32

标签: git version-control git-merge git-rebase

我需要GIT的一些帮助。我们刚刚开始使用GIT,我们现在没有在我们公司安装好的设置,所以在我看来一切都很糟糕。 我提供了我的历史,以帮助你们更好地理解我想要做的事情。 Our Git History

Git history continued

所以今天我想发布到我们的支持和主服务器。我们首先发布到Sup,然后将Sup合并到Live / master系统中。

如果您查看历史记录并找到我想要合并到支持中的分支“130029”,但想看看我是否可以“压缩”所有分支/提交,我想今天发布到一个包中。

我已阅读有关重新编写的内容,并在分支“130029”上尝试了它,我按照代码

进行了操作
git checkout DEV.130029
git rebase SUPPORT -i

这把我带到了rebase编辑器,它列出了所有的提交,但我期待那些提交成为其他分支,所以我可以压缩它们然后合并到支持中。我没有比上面的代码更进一步,我只是做了中止,因为它似乎我迷路了。 有没有其他方法我可以选择我想发布的所有分支,然后将所有分支合并为Sup / master中的一个提交?

提前致谢!

1 个答案:

答案 0 :(得分:0)

我认为你的问题,如果你有问题,就是工作流程。任何使用特征分支的足够复杂的项目都会有一个混乱的图形。如果你想要一个好的例子看起来不比git.git, the git source itself.那么这是一个字面wrote the docs about git workflow,的项目,如果你把master的当前快照放到gitktig ,第一次通过时看起来相当混乱。

关于你的图表有什么问题并不是它看起来像地铁地图本身。它没有显示上游与下游分支的明确概念,或从上游分支到下游分支的有序分级。实际上,当我们从SVN迁移到git时,它看起来非常类似于我们在雇主处使用的工作流程:高度集中,依赖于多个“永久”分支,这些分支通常不会彼此合并,其集成已完成完全是临时的。这也可能是完全错误的。从几个历史快照中很难推断出公司的工作流程策略。

如果您觉得它不易解释,并且您的团队可以分享这种感觉,那么可能是时候进行新的工作流程了。版本控制可以让您的生活更轻松,不会耗费您的所有时间。存在许多成功的git工作流程:

至少,如果您没有修复可用的最老的上游分支中的错误,则不会让下游开发分支机构与其上游祖先的更新保持同步,或者在分支机构之间定期进行挑选,是时候改变了。

最后,如果您没有关于工作流程的任何其他信息,如果您在白天工作,比如一个功能分支,并希望与SUPPORT分支合并,首先挤压,这是许多方法:

git checkout DEV.130029
git rebase -i --onto SUPPORT <branch_DEV_was_cut_from> DEV.130029 ;# squash what you want here
git checkout SUPPORT
git merge DEV.130029

如果您为了使图表看起来更简单而进行了变基,那么请将时间花在工作流程上。