我是 Git 新手,我犯了一个巨大的错误。Git一直提示我
git - rejected master -> master (non-fast-forward)
.
但是,我仍然承诺使用:
--force
这是灾难性的,整个项目又回到了大约一周前的阶段。我失去了很多改变。我似乎被推回了之前的提交。无论如何我可以回到我的新提交之一吗?因为我已经进行了大量的更改并且需要将它们恢复。
我是 Git 新手,我犯了一个巨大的错误。Git一直提示我
git - rejected master -> master (non-fast-forward)
.
但是,我仍然承诺使用:
--force
这是灾难性的,整个项目又回到了大约一周前的阶段。我失去了很多改变。我似乎被推回了之前的提交。无论如何我可以回到我的新提交之一吗?因为我已经进行了大量的更改并且需要将它们恢复。
使用git reflog
命令。reflog 命令将为您提供有关分支头部发生的事情的良好历史记录。运行它,然后找到引用您想要返回的状态的行。
找到提交后,重置您的分支以指向特定的提交。
git reset --hard <commit_id>
这些--hard
选项将当前分支的 HEAD 设置回您指定的提交。
从您的问题看来,您做了一个git push --force
. 这真是太糟了。我不确定这是否可行,但值得一试。按照建议的顺序进行,只有当一个建议不起作用时才跳到下一个:
master
使用git revert {commit_hash}
. 如果您觉得您的更改已恢复,请再执行一次git commit
and git push
。git checkout HEAD~1
. 这将使 HEAD 返回一个提交。了解需要返回多少次提交的最简单方法是使用git reflog
并查看哪个提交是最后一个稳定的提交。如果这个状态是你认为正确的,那么做 agit commit
和git push
。请不要忽略 git 警告。根据我的经验,git 只会警告你绝对必要的东西。