Git 从源位置删除提交

Git 从源位置删除提交,git,gitlab,Git,Gitlab,当我打算克隆一个项目并设置一个新的原点时,我意外地将一些提交提交到了我的原点。我已恢复了我想要保留的回购协议中的更改,但无法将其推到原始位置 $ git log --pretty=oneline --format=%h dff98f5 2e97c31 31b8b73 460fae6 c589d7a edbda48 $git reset --hard 460fae6 On branch master... 这就是不起作用的地方 git push --force origin master

当我打算克隆一个项目并设置一个新的原点时,我意外地将一些提交提交到了我的原点。我已恢复了我想要保留的回购协议中的更改,但无法将其推到原始位置

$ git log --pretty=oneline --format=%h

dff98f5
2e97c31
31b8b73
460fae6
c589d7a
edbda48

$git reset --hard 460fae6

On branch master...
这就是不起作用的地方

git push --force origin master

! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@gitlab.com:username/projectname.git'

如何更新我的Gitlab回购?(我在网站上没有看到任何UI选项。)

你说你恢复了更改,但你使用的命令是
重置
;您从分支中删除了提交,而不是还原它们。另一种选择是实际还原它们,创建新的提交以撤消不需要的提交。您可以使用
revert
命令执行此操作:

git revert 460fae6..dff98f5

这样就不需要强制推送,只需添加更多提交。如果有其他人和你一起进行回购,那么这可能是一条路。

有一个古老的故事,讲的是一个魔术师调用一个守护程序来保护他的藏品(魔杖、药水,无论是什么)。他告诉精灵他要离开几天,精灵应该吃掉任何回到他家的人

三天后,魔术师回到家里,恶魔吃掉了他

您已经在Gitlab存储库中编程了一个稍微友好一些的守护进程——预接收挂钩。您告诉它禁止任何试图从您的存储库中删除提交的人。您试图使用git push--force从存储库中删除提交。你的守护进程阻止你这么做


如果您现在希望这样做,您应该删除守护进程,或者使其更智能。不要只吃任何人,吃任何不是你的人。

这是你的gitlab回购吗?我是说,你有完全的权利吗?如果是这样,您应该能够在分支上配置钩子。@Romanvaleri是的,我的repo。我是店主。实际的答案就在这里。尽管如此,让我们注意到,不知道如何正确配置您的回购设置的问题在某些时候会导致麻烦。