【问题标题】:How do I merge commits after I have already pushed on Git?在我已经推送 Git 之后如何合并提交?
【发布时间】:2011-11-05 10:47:24
【问题描述】:

我是 git 新手,我提交了一些更改,git 告诉我需要先拉,所以我拉了但我的编辑器没有显示修改后的版本,所以我再次提交了冲突,我解决了冲突和再次承诺。现在我有 3 个提交! (虽然我认为第一个不应该在那里)

问题是我每次提交后都推送。那么有没有办法合并那些推送的提交?

你能提供一步一步的解释吗?我以前使用过 svn 和 cvs,但我对 git 很陌生

【问题讨论】:

  • 我很困惑。可以向我们展示你的提交图的顶部是什么样子的吗? (即当你运行gitk 时你看到了什么?)
  • 在你准备好分享你拥有的东西之前,你不应该推动。如果你仍然不确定你的 repo 中的内容是否正确(听起来就是这样),你不应该推动。

标签: git merge github push commit


【解决方案1】:

您描述的情况似乎不太可能,因为在冲突中尝试提交会导致以下错误:

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

【讨论】:

    【解决方案2】:

    如果我正确理解了您的问题,这应该可以满足您的要求

    您可以将所有这三个提交与git rebase -i HEAD~3 一起压缩。这将基本上摆脱您的错误提交,并且您最后一个中的内容将是最终内容。

    当你运行命令时,会弹出一个编辑器。替换pick in the second and third line withsquash。然后,您将需要使用 -f 标志再次推送。

    如果它们是您的最后三个提交,这将起作用。如果他们比这更落后。您将需要更远地重新定位,并且只将 squash 放在您想要压缩的两个提交上。

    【讨论】:

    • 如果其他人正在处理他推送到的存储库,那么在他已经推送时像这样重新设置基准可能不是一个好主意。
    • @Gerry 据我了解,该操作推送了他的提交,现在想要编辑它们。他别无选择,只能改写历史。
    • 另一个选择是在意识到这样做可能导致的问题可能超过最初的问题之后选择不这样做。
    猜你喜欢
    • 2018-05-28
    • 2021-04-20
    • 2015-06-07
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    相关资源
    最近更新 更多