是否有一个Git命令可以恢复工作树和索引中所有未提交的更改,并删除新创建的文件和文件夹?


当前回答

git clean -fd

没有帮助,新的文件仍然存在。我完全删除了所有工作树,然后

git reset --hard

在“https://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in-git/673420#673420”中添加-x选项的建议:

git clean -fdx

注意-x标志将删除所有被Git忽略的文件,所以要小心(参见我引用的答案中的讨论)。

其他回答

git clean -fd

没有帮助,新的文件仍然存在。我完全删除了所有工作树,然后

git reset --hard

在“https://stackoverflow.com/questions/673407/how-do-i-clear-my-local-working-directory-in-git/673420#673420”中添加-x选项的建议:

git clean -fdx

注意-x标志将删除所有被Git忽略的文件,所以要小心(参见我引用的答案中的讨论)。

请注意,可能仍然有文件看起来不会消失——它们可能是未编辑的,但Git可能因为CRLF / LF更改而将它们标记为正在编辑。看看你最近是否在.gitattributes中做了一些更改。

在我的例子中,我将CRLF设置添加到.gitattributes文件中,因此所有文件都保留在“修改文件”列表中。更改.gitattributes设置会使它们消失。

Git 2.23引入了Git restore命令来恢复工作树文件。

恢复当前目录下的所有文件。

git restore .

如果您想恢复所有C源文件以匹配索引中的版本,您可以这样做

git restore '*.c'

如果你有一个未提交的更改(它只在你的工作副本中),你希望恢复到最近提交的副本,请执行以下操作:

git checkout filename

从Git帮助:

 Changes to be committed:
      (use "git restore --staged <file>..." to unstage)

    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)