Git 重置显示要从服务器获取一项

Git reset shows one item to be fetch from the server

我是 GIT 的新手,我错误地向服务器推送了一个不属于当前分支的代码。

我对 BranchX 的提交历史是这样的(例如修改了提交消息):

ca184982 - Changes I pushed mistakenly 
fa761347 - Some good changes 
2a839483 - Previous commits

在网上查了一些SO post和博客后,我执行以下命令:

git reset --hard fa761347

执行上述命令后,当我同步我的分支时,它显示必须从服务器拉取 1 个提交,但实际上,我也想从服务器删除该提交。

你能指出我做错了什么吗?或者还有其他我必须执行的命令吗?

您需要删除或还原 远程 分支上的当前提交。

我建议还原并推送还原的提交

  1. git pull - 这将导致错误提交
  2. git revert ca184982 - 这将创建并提交一个提交,它是 ca184982 到本地分支
  3. 的逆转
  4. git push - 这会将错误提交的反向推送到远程分支。
  5. 全部完成

在您的评论中,您说 git push -f 有效但是:

  • 你并不总是能做到(服务器规则);和
  • 当其他人在您 push -f
  • 之前执行 pull 时,可能会造成棘手的情况

回复:评论:

在此之后,历史将如下所示:

 xxxxxxxx - Revert of 'ca184982'
 ca184982 - Changes I pushed mistakenly 
 fa761347 - Some good changes 
 2a839483 - Previous commits