关于git:将当前分支重置为上一个提交后无法推送

Unable to push after resetting current branch to previous commit

步骤1:我创建了一个本地Git存储库

步骤2:然后我做了一个Pull(当前分支是master)

步骤3:之后,我通过使用Reset(在本地副本上如下所示)还原了合并。

enter image description here

步骤4:之后,它可以正确显示,如下所示。

enter image description here

问:我试图将更改推送到远程主服务器。 它给出以下错误。 你能告诉我为什么吗? 我正在使用TortoiseGit。 谢谢。

enter image description here


我找到了解决方案。以下是步骤。

步骤1:克隆远程存储库(将在默认分支主服务器上签出
自动)

1
git clone https://github.com/myrepo/myrepo.git

第2步:重置本地主机
-它将更改主服务器以指向具有特定SHA的其他提交。

1
git reset --hard 2f89f2971c3cr45fe187241b8cb89a8ef8234ea3

第三步:推回远程仓库。

1
git push https://github.com/myrepo/myrepo.git --force

本文对我有很大帮助:撤消合并

就是这样,一切都完成了。


在硬重置分支到选定的提交之后,您应该只强制推送更改。

1
VCS - Git - Push - Force push

您可以检出从您先前要还原的提交中更改的每个文件,然后进行新的提交。

我不熟悉toroisegit,但我想它在某处有命令行输入,因此步骤如下所示:

假设您要还原的提交哈希为29edf27
然后您更改了两个要还原的文件,分别为file1.phpfile2.txt

1
2
3
4
git checkout 29edf27 -- file1.php
git checkout 29edf27 -- file2.txt
git commit -m"reverted commit to 29edf27"
git push origin master


这是一个棘手的情况。您无法以这种方式还原远程存储库,因为远程服务器会识别出存储库的状态在后面。无疑有更好的解决方案,但是您可以删除远程存储库,使用相同的名称创建一个新的远程存储库,然后将本地存储库推送到该存储库。