如何撤销自上次git提交以来的更改

3

这可能是一个简单但令人烦恼的问题。如何删除自上次提交以来的所有更改?我搞砸了一个补丁,我想回到上次提交时的状态。

我尝试过:

git reset --hard master

并且

git checkout master

但是它并没有清除我添加/修改的文件(它们仍然被列为未跟踪的文件)。


可能是重复问题:在git中撤销上次提交之后的所有更改 - itsjeyd
3个回答

5

未跟踪的文件是指,Git并不知道或关心它们。git reset --hard 仅会将已跟踪的文件恢复到最近(或命名的)提交状态。

您可以使用 git clean 从工作树中删除未跟踪的文件和目录。请注意不要意外删除任何重要的工作!

如果您需要将存储库还原为最近提交时的状态,就像刚刚克隆一样,这个"万能解药"还会删除存储库“忽略”的所有用户文件!那就是: git reset --hard && git clean -fdx。(如果省略了x标志,则仅会删除未跟踪但未被忽略的文件,这可能包括构建产品等。)


有必须的操作符吗?Git实际上拒绝执行它(并明确告诉我),它说需要-i、-n或-f。 - Hoytman
@Hoytman 我建议阅读手册页。默认情况下,它会拒绝操作,除非您指定“-f”参数。您可以选择指定“-n”参数,以查看如果提供“-f”,它将执行什么操作,而不实际执行。 - cdhowie

0

0
虽然有点晚了,但是看到在2017/09/26这个问题仍然在谷歌搜索引擎中排名第三,我还是想回答一下。我通过这个Stack Exchange讨论找到了适合我的方法:git undo all uncommitted or unsaved changes
基本上,如果你还没有使用git add,那么可以使用以下命令:
git checkout .

要取消使用 git add 暂存的文件,请使用:

git reset

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接