Git 重置不会更改服务器版本?

sur*_*190 1 git github

团队中的一个提交并推送到远程,我们都包括服务器拉取了最新版本。

但现在它已经破坏了应用程序的一个重要部分。所以我们:

git reset HEAD^ --hard

git push origin -f
Run Code Online (Sandbox Code Playgroud)

推送后的消息是:

Total 0 (delta 0), reused 0 (delta 0)...forced update
Run Code Online (Sandbox Code Playgroud)

然后我在服务器上拉:

git pull
Run Code Online (Sandbox Code Playgroud)

它说的消息是:

Already up-to-date
Run Code Online (Sandbox Code Playgroud)

所以它没有恢复到上一次提交之前的那个。在我的本地版本上它是正确的提交,但在服务器上它仍然是旧的。

主要(中央)存储库是 github 上的存储库,然后是服务器版本,然后是我的本地存储库。

Nil*_*ner 5

你永远不应该重写历史来修复错误。相反,revert破坏性提交:

git revert HEAD
git push origin master
Run Code Online (Sandbox Code Playgroud)

这样你就可以通过及时前进来撤销对过去的改变。

要修复您的服务器,您需要到reset远程分支:

git fetch origin
git reset --hard origin/master
Run Code Online (Sandbox Code Playgroud)

origin您在服务器上的远程名称在哪里,是master您正在处理的分支。

这将使您的master分支弯曲到与 上的master分支相同的状态origin

背景:pull尝试将merge远程的相应分支插入本地分支。由于远程分支比本地分支“短”,因此无需合并,并且merge只会说“好吧,我完成了,两个分支都是最新的”。