如何在Git中放弃未暂存的更改?

6208

我如何抛弃工作副本中未在索引中的更改?


16
git-clean 只会从工作树中删除未被跟踪的文件。详见 https://git-scm.com/docs/git-clean。 - Yega
36
为了澄清Asenar上面的评论,git-clean -df可能会很危险。它会删除本地未被跟踪的文件(例如由.gitignore覆盖的文件)。请仔细阅读以下所有内容,并考虑使用git checkout .代替。 - jacanterbury
26
"git clean -df"警告!我尝试过这个命令,丢失了一些关键文件夹,无法恢复...痛苦! - Gabe Karkanis
72
执行 git status 命令会提供建议,告诉你如何操作!执行 git checkout -- . 命令即可。 - Paulo
28
从2019年7月开始,git status 建议使用 git restore 命令来达到相同的目的,这是一个新的命令。请参考我的2019更新 - prosoitos
显示剩余6条评论
41个回答

-6

要删除未提交的更改,我尝试了 Git 命令 "git restore .",但它并没有起作用。一个非常好的方法是使用:

git revert --hard

它完美地运行。它的Git帮助完美地解释了这一点:

--hard 重置索引和工作树。自从上次提交以来,对工作树中已跟踪文件的任何更改都将被丢弃。任何位于写入任何已跟踪文件路径上的未跟踪文件或目录将被简单地删除。

附注:我正在使用git版本2.35.3.windows.1。我认为这里有很多回答把问题复杂化了。


4
你是指 git reset --hard 命令吗?就像这个回答所说的那样。你知道这将重置索引和工作树,而不仅仅是工作树。使用 git restore -- . 命令有什么问题吗? - VonC
没有 git revert --hard 这样的命令。显然你想要的是像 VonC 建议的 git reset --hard。这将不可撤销地丢失暂存的更改——你不应该在没有明确警告的情况下引导用户这样做。 - LarsH

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