回滚到最后的提交

我只是做了一个

git commit -m "blah" 

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

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


→更新的答案

1)要UNDO本地文件更改但不删除您的上次提交,然后使用

 git reset --hard 

2)要UNDO本地文件更改并删除您的上次提交,然后使用

 git reset --hard HEAD^ or git reset --hard HEAD~ 

3)要保持本地文件更改, 只删除最后一次提交,然后使用

 git reset --soft HEAD^ or git reset --soft HEAD~ 

经常使用git statusgit log来观察你的当前状态。


→原来的答案

“重置工作树到最后的提交”

 git reset --hard HEAD^ 

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

 git clean 

如果你想删除新添加的内容和文件(已添加到索引),那么你可以使用:

 git reset --hard 

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

 git reset --hard HEAD^ 

要删除未跟踪的文件(所以新的文件还没有添加到索引)和文件夹使用:

 git clean --force -d 

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

你可以使用git revert HEAD^还原到倒数第二次提交。 你也可以指定提交使用id来代替HEAD ^

如果您只想取消提交上次提交,请使用以下命令:

 git reset HEAD~ 

像我的魅力一样工作。

自上次提交以来,对UNDO本地文件更改的简单方法是将它们放在新的分支中:

 git branch changes git checkout changes git add . git commit 

这留下了新分支的变化。 返回到原始分支find它回到最后一次提交:

 git checkout master 

新的分支是一个很好的地方,可以练习不同的方法来恢复变化,而不会弄乱原来的分支。