1

我是 Git 新手,我犯了一个巨大的错误。Git一直提示我

git - rejected master -> master (non-fast-forward).

但是,我仍然承诺使用:

--force

这是灾难性的,整个项目又回到了大约一周前的阶段。我失去了很多改变。我似乎被推回了之前的提交。无论如何我可以回到我的新提交之一吗?因为我已经进行了大量的更改并且需要将它们恢复。

4

2 回答 2

4

使用git reflog命令。reflog 命令将为您提供有关分支头部发生的事情的良好历史记录。运行它,然后找到引用您想要返回的状态的行。

找到提交后,重置您的分支以指向特定的提交。

git reset --hard <commit_id>

这些--hard选项将当前分支的 HEAD 设置回您指定的提交。

于 2012-12-10T05:17:58.560 回答
0

从您的问题看来,您做了一个git push --force. 这真是太糟了。我不确定这是否可行,但值得一试。按照建议的顺序进行,只有当一个建议不起作用时才跳到下一个:

  • 尝试master使用git revert {commit_hash}. 如果您觉得您的更改已恢复,请再执行一次git commitand git push
  • 如果上述方法不起作用并且这是您所做的最后一次提交,您可以尝试使用git checkout HEAD~1. 这将使 HEAD 返回一个提交。了解需要返回多少次提交的最简单方法是使用git reflog并查看哪个提交是最后一个稳定的提交。如果这个状态是你认为正确的,那么做 agit commitgit push

请不要忽略 git 警告。根据我的经验,git 只会警告你绝对必要的东西。

于 2012-12-10T05:34:32.543 回答