2011-08-28 96 views
0

我是新来的git,我犯了一些变化,git告诉我需要先拉,所以我拉了,但我的编辑没有显示修改后的版本,所以我再次提交冲突,我解决了冲突并提交再次。现在我有3个提交! (虽然我认为第一个不应该在那里)我已经推入Git后如何合并提交?

问题是我每次提交后都会推送。那么是否有合并这些推送提交的方法?

您能否提供一步一步的解释?我已经使用SVN和CVS之前,但我很新与git

+0

我很困惑。可以向我们展示你的提交图的顶部是怎样的? (也就是说,当你运行'gitk'时你看到了什么?) – svick

+0

在你准备好分享你的东西之前,你不应该推动它。如果您仍然不确定回购中的内容是否正确(听起来像是这种情况),您不应该推。 – Tekkub

回答

0

您所描述的情况似乎不太可能,因为试图去提交,而在下面的错误冲突的结果:

fatal: 'commit' is not possible because you have unmerged files. 
Please, fix them up in the work tree, and then use 'git add/rm <file>' as 
appropriate to mark resolution and make a commit, or use 'git commit -a'. 

如果你不能提交冲突然后运行git push不会实际推送更改。

您可以运行下面的命令来看看有什么承诺实际发生

git log --patch --color 
0

如果我corrrectly理解你的问题,这应该做你想要

可以壁球所有这三个是什么与git rebase -i HEAD~3一起承诺。这将基本上摆脱你的坏提交和你最后一个内容将是最终的内容。

当您运行该命令时,将会弹出一个编辑器。替换pick in the second and third line with壁球。您将需要再次推出-f标志。

这将工作,如果他们是你的最后三个提交。如果它们远远落后于此。您将需要重新放回更远的位置,并且只需要将squash放在您要压扁的两个提交中。

+0

当他已经推送时,像这样重新激活可能不是一个好主意,如果其他人正在处理他推送到的存储库。 – Gerry

+0

@Gerry根据我的理解,op推送了他的提交,现在想编辑它们。他别无选择,只能重写历史。 – Andy

+0

另一种选择是在意识到由此导致的可能问题可能超过最初的问题之后选择不这样做。 – Gerry