2012-04-22 47 views
0

我正与其他几个开发人员在一个项目上工作,我们正在使用git进行版本控制。我们所有人都是不同程度的混帐新手。出于某种原因,我们的开发人员提交的一项内容是覆盖较新的工作 - 其他开发人员将进行更改,一切正常 - 此开发人员将进行更改,新更改将被旧版本覆盖。这本身就是一个话题(任何见解都值得欢迎)。摆脱一个开发提交

我的问题是:我怎样才能浏览历史并删除他的提交?我会用rebase吗?樱桃采摘?正如我所说的,我或多或少是一个git新手,我没有任何人有更多的经验可以转向。

+0

为什么这个开发者重写其他的东西不可能没有其他信息说 - 也许有人在解决合并冲突方面做得不好,也许这个人只是做了不好的提交。查看历史记录(也许使用gitk)来查看问题出在哪里,然后在必要时观察他犯下的错误,或者观察某人是否合并了他的东西,并查看他们是否在做任何不同的事情。 – Cascabel 2012-04-23 01:36:08

回答

1

您应该可以使用git filter-branch来做到这一点。请注意,这可能会彻底改变你的树,所以先备份多个备份并仔细验证结果。

+0

关于有多个备份 - 这是我会创建一个新的分支,并在那里做?如果我这样做,我不得不把它拿回主人 - 是的? – JoeM05 2012-04-22 20:48:53

+0

我的意思是在文件系统级别备份git目录。所以如果你的滤波器分支不好,你就不会有紧急事件发生。 – 2012-04-22 20:59:09

+1

@ JoeM05你可以在一个新的分支中完成,只对那个分支应用filter-branch,即使你不小心将它应用到其他分支,它也会创建分支的前一个位置的备份......但是因为它是这样的一个剧烈的操作,它是安全,简单和干净的,只需要在一个完全独立的克隆中完成。 – Cascabel 2012-04-23 01:34:32