Git新手。使用git commit犯了一个大错误,并最终提交了一个较旧的提交

时间:2012-12-10 05:02:47

标签: git

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

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

但是,我仍然坚持使用:

--force

这是灾难性的,整个项目改回到大约一周前的阶段。我失去了很多变化。我似乎已被推回到早先的提交。无论如何我可以回到我的一个新提交?因为我做了大量的改变,需要让他们回来。

2 个答案:

答案 0 :(得分:3)

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

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

git reset --hard <commit_id>

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

答案 1 :(得分:0)

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

  • 尝试使用master将您强制使用的提交哈希恢复到git revert {commit_hash}分支。如果您认为自己的更改已恢复,请执行其他git commitgit push
  • 如果以上操作不起作用并且这是您最后一次提交,则可以尝试使用git checkout HEAD~1返回一次提交。这将使HEAD返回一个提交。了解需要返回多少提交的最简单方法是使用git reflog并查看哪个提交是最后一个提交。如果您觉得这种状态是正确的,请执行git commitgit push

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