回滚到最后一个git commit

时间:2011-02-11 04:30:37

标签: git

我刚做了一个

git commit -m "blah"

然后我添加了一些文件,如何回滚并删除当前文件中尚未添加/提交的内容?

6 个答案:

答案 0 :(得分:184)

以下 ORIGINAL 答案是我认为 OP 正在寻找的答案。虽然根据@ChrisNevill的评论,原始答案可能不是正在寻找的。我已经更新了答案以澄清。


→更新的答案

1) UNDO 本地文件更改但 NOT REMOVE 您的上一次提交

git reset --hard

2) UNDO 本地文件更改 AND REMOVE 您的上次提交

git reset --hard HEAD^

3)保持本地文件更改仅删除上次提交

git reset --soft HEAD^

→原始答案

“将工作树重置为上次提交”

git reset --hard HEAD^   

“清除工作树中的未知文件”

git clean

答案 1 :(得分:45)

如果要删除已添加的新添加的内容和文件(添加到索引中),请使用:

git reset --hard

如果你想删除你的最新提交(是带有“blah”消息的提交),那么最好使用:

git reset --hard HEAD^

要删除未跟踪的文件(因此尚未添加到索引中的新文件)和文件夹使用:

git clean --force -d

答案 2 :(得分:13)

git reset --hard将强制工作目录返回上次提交并删除新的/已更改的文件。

答案 3 :(得分:3)

您可以使用git revert HEAD^恢复提交,以恢复到倒数第二次提交。您还可以使用id而不是HEAD ^

指定要还原的提交

答案 4 :(得分:1)

自上次提交以来UNDO本地文件更改的一种简单万无一失的方式是将它们放置在新分支中:

git branch changes
git checkout changes
git add .
git commit

这将在新分支中留下更改。返回原始分支,找回最后一次提交:

git checkout master

新分支是练习不同方法来恢复变更的好地方,而不会弄乱原始分支。

答案 5 :(得分:0)

如果您想要取消提交最后一次提交,请使用:

git reset HEAD~

对我来说就像魅力一样。