关于Git:Git – 如何将所有更改回滚到上次提交?

Git - how to roll back all changes to last commit?

我无意中删除了源目录。我以为我在删除另一个目录。但我有最后一个承诺,那就是我需要恢复的地方。

我有两个分支:

1
2
master
dev1

在dev1上:

1
2
git add .
git commit -m 'commit message'

然后:

1
2
git checkout master
git merge dev1

然后我不小心删除了整个存储库。

然后我很难重新设置为最后一次提交,我看到它显示了所有正确的更改。但是当我到达我的目录时,它是旧的目录(我复制了旧的目录,但没有从这里删除)。我该怎么办?

  • 你不必在那里硬重置;只需git checkout master -- path/to/folder。江户十一〔一〕说什么?
  • 你说的delete the whole repository是什么意思?
  • @戳它说没有什么可承诺的。
  • 最后一次提交只在另一个分支中。如果我有上次提交之前提交的文件。我能不能把它合并,这样它就能恢复到最新的版本?


这取决于您所说的"删除整个存储库"。从您对其他答案的评论中,我认为您没有删除所有内容,如果您仍然可以成功地在该目录中执行git命令,那么您可以简单地执行git reset --hard master(这个问题将更详细地解释)。

如果您已经在本地主机上完全承载了您的整个Git存储库目录,因为您将更改推送到了远程,那么您可以简单地执行ecx1(2),它将从远程服务器上删除所有内容。


做一个

git log

获取上一次提交的哈希值,然后执行

git revert your_hash_here

恢复提交。最后做一个

git push

推动你的改变,并将它们快速地传递给大师

  • 我试过了,但有个错误:cb963f5..f37d6e4 new_medical_card_rev1 -> new_medical_card_rev1 ! [rejected] master -> master (non-fast-forward) error: failed to push some refs to '/home/oerp/openerp70/openerp/source/addons/ambulance_system‌​' To prevent you from losing history, non-fast-forward updates were rejected Merge the remote changes (e.g. 'git pull') before pushing again. See the 'Note about fast-forwards' section of 'git push --help' for details.


如果删除了整个存储库,则必须从备份中获取它(或从您从中提取或推送到的任何其他存储库中重建它)。Git再也没什么可干的了。