2012-07-06 146 views
1

合并分支机构,Git的我们的设置,我们有以下永久分支: - 主 | - 修复 - x.x中 - 释放 - 开发还原使用Git

发展,是我们在开发代码去哪里。当我们几乎准备好“发布”时,它会合并到“发布”中,在此之前我们会做出任何额外的最后更改,然后将其合并到“主”中并为其添加标签。如果在旧版本中发现错误,我们为它创建一个单独的分支,以便它可以修复并给出相关的版本标记。

我们已经取得了新手的错误,我不经意地合并了一些实验代码为释放(这是基于发展),然后一个同事做了一个类似的错误释放合并到一个分支修正后不久在哪里。所以发布和修复几乎是我们开发分支的副本。

我想回去,最好是从历史记录中删除提交,因为这不是一个编码错误,而是一个完全混乱的合并。但我一直在挖掘,无法找到一个明确的方式来与rebase做到这一点。我找不到如何运行rebase来列出我想要删除的提交。我们在master中犯了这个错误似乎很容易。

有关如何最好地从这恢复的任何建议表示赞赏。从那时起,这些已经是一些提交,所以他们不在脑海。

回答

1

你可以像任何其他提交一样使用git reset来撤消合并提交。例如,如果您要删除1,2或3次提交,则简写分别为git reset HEAD~1git reset HEAD~2git reset HEAD~3

到现在为止您将编辑您的本地提交树。如果要更新远程服务器,则必须执行git push --force(注意,force标志可能是更多问题的根源)。

由于其他开发人员可能已经提取了有问题的提交,因此有可能因为您将更改远程服务器中的分支头引用,他们的git客户端将失去其跟踪。因此,他们再次获得一致副本的最简单方法就是git clone回购。这是您应该避免使用--force标志的原因。当然,还有很多其他解决方案可以避免再次克隆所有内容。但他们很难解释,并取决于特定的情况。