团队中的一个提交并推送到远程,我们都包括服务器拉取了最新版本。
但现在它已经破坏了应用程序的一个重要部分。所以我们:
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 上的存储库,然后是服务器版本,然后是我的本地存储库。
你永远不应该重写历史来修复错误。相反,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只会说“好吧,我完成了,两个分支都是最新的”。