在git推送之后,如何取消git提交?

在git推送之后,如何取消git提交?,git,Git,从这里开始,它说 This undo’s your commit and also resets your working tree to the last commit. 1 git reset --hard HEAD^ 但在我做了一次“git推送”之后,我怎么能取消最后一次提交呢 多谢各位 当我做'git log'时,我得到了我的最高承诺 commit 29fc764693a5933a379169e22891e4b0d3d2426f Merge: 002db49 cfb1d8f 我如何

从这里开始,它说

This undo’s your commit and also resets your working tree to the last commit.

1 git reset --hard HEAD^
但在我做了一次“git推送”之后,我怎么能取消最后一次提交呢

多谢各位

当我做'git log'时,我得到了我的最高承诺

commit 29fc764693a5933a379169e22891e4b0d3d2426f
Merge: 002db49 cfb1d8f
我如何“git还原”该更改

我明白了

$ git revert HEAD 
fatal: Commit 29fc764693a5933a379169e22891e4b0d3d2426f is a merge but no -m option was given.

您应该
git revert
commit


您也可以
git push--force
git重置之后执行分支,但是如果有人在重置之前拉过您的分支,您的历史记录将发生分歧,因此您确实不应该这样做。

您可以使用
git revert HEAD
,它会生成一个新的提交,这将撤消您以前提交中的更改。看。但是请注意,提交和恢复提交都将显示在历史记录中

编辑:正如KingChrunch提到的,当恢复合并提交时,您需要指定要恢复到哪个父级,因此添加
-m
。当然,简单地跟随我发布的链接就会告诉你这一点


您不能(实际上不应该)修改共享存储库的历史记录。如果您想修改历史记录(请不要),可以使用
git-reset
git-push--force
,或
git-rebase

如果您使用GitLab和代码审查/合并请求步骤,那么就找到了一个更简单的方法。在提交和推送中意外包含不必要的文件后发现此问题。您还可以使用此方法进行编辑,并在合并之前将其重新提交到分支

我们的过程:编码后,我们提交、从上游获取、重新设置基础、推送到GitLab。这将在GitLab上创建一个分支,然后为该分支创建一个合并请求。这是为了确保所有代码在进入主分支之前都经过同行的审查。在这种情况下,这是一个非常有用的步骤,因为我的同行评议同事发现了我的错误

注意:这只是接受合并请求之前的一个选项

要在推送到GitLab之后和合并之前从提交中删除文件,请执行以下操作:

  • 打开GitLab合并请求
  • 选择“更改”选项卡
  • 查找提交中不需要的文件
  • 单击文件的“查看文件”按钮
  • 单击“删除”按钮
  • 输入提交信息并提交更改
  • 您的合并请求现已修复,不需要的文件已从提交中删除。现在可以合并(如果其余部分通过代码检查)

    您也可以通过这种方式编辑和重新提交文件。这是一种简单的快速修复方法,无需打开Eclipse/IntelliJ(您使用的任何其他工具)并检查分支


    这让我省去了几个小时的痛苦,避免了在Eclipse中从推送的分支中删除文件。

    Ok。但我做了“git提交”和“git推送”,因为我想回滚我的更改,所以我做了“git重置--软头^”,我想在没有更改的情况下测试我的代码,我做了“git隐藏”构建和测试。现在,在我执行“git revert”之前,我是否需要执行git stash pop?什么是“致命:提交29FC764693A5933A3379169E22891E4B0D3D2426F是一个合并,但没有给出-m选项。“我在执行“git revert HEAD”时出现此错误?”git revert返回到以前的提交。如果要恢复合并提交,那就不那么容易了,因为它至少有两个父提交,没有人能说哪一个是分支,哪一个是/是合并父提交。您必须使用
    -m
    -选项选择要提交的文件。请查看git帮助还原