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


当前回答

安全而漫长的路:

Git分支要删除 Git签出删除 Git添加。 “我做了件坏事,对不起” Git检查开发 git分支-D删除

其他回答

一个不平凡的方法是运行这两个命令:

这将移动您的更改到stash,将您带回HEAD状态 这将删除在上一个命令中创建的最新的stash。

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

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

您可以执行以下两条命令:

# Revert changes to modified files.
git reset --hard

# Remove all untracked files and directories.
# '-f' is force, '-d' is remove directories.
git clean -fd

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

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

git restore .

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

git restore '*.c'

我通常使用这种方法,效果很好:

mv fold/file /tmp
git checkout fold/file