我想放弃commit <commit-hash>后所做的所有更改。 于是我做了:

git reset --hard <commit-hash>

现在我想对我的遥控器做同样的事情。我该怎么做呢?我已经做了一些提交(和推)后<commit-hash>,我只是想放弃他们所有。只是在这过程中出了严重的问题我不想让事情变得更糟。;(

我基本上想把我的原点/主节点倒回到<commit-hash>


当前回答

在GitLab上,在执行此操作之前,您可能必须将分支设置为未保护状态。可以在[repo] > Settings > Repository > Protected Branches中设置。那么马克回答的方法就有用了。

git reset --hard <commit-hash>
git push -f origin master

其他回答

在GitLab上,在执行此操作之前,您可能必须将分支设置为未保护状态。可以在[repo] > Settings > Repository > Protected Branches中设置。那么马克回答的方法就有用了。

git reset --hard <commit-hash>
git push -f origin master

让我们假设你的分支在本地和远程都叫master,你的远程叫origin,你可以这样做:

Git reflog来获取所有的提交历史,你的提交哈希格式如下:e34e1ff

git reset --hard <commit-hash>

git push -f origin master

对于之前的答案,我的观点是:如果

git push --force <remote> <the-hash>:<the remote branch>

仍然不工作,您可能需要编辑<your-remote-repo>。Git /配置文件的接收部分:

[receive]
  #denyNonFastforwards = true
  denyNonFastforwards = false

我最近也遇到了同样的问题,我通过两步解决了这个问题:

用git Reset将其重置为本地git——hard HEAD~1这里HEAD~1是最近提交的。 将其强行推到所需的分支git Push -f origin main。

就是这样。

如果您的分支不是开发或生产分支,实现这一点的最简单方法是在本地重新设置某个提交,并从那里创建一个新分支。你可以使用:

git 结帐 000000

(其中000000是你想要去的提交id),然后简单地创建一个新分支:

Git远程添加[name_of_your_remote]

然后你可以创建一个新的PR,一切都将正常工作!