Git删除所有未修改的文件

oymdgrw7  于 2023-04-19  发布在  Git
关注(0)|答案(5)|浏览(202)

我在Linux平台上的项目中使用了git。我在一个特定的目录中有很多文件。我修改了该目录中的大约50个以上的文件,但没有暂存和提交它。我想删除该目录中所有其他未修改的文件?有没有办法使用git和Linux命令来做到这一点?

o75abkj4

o75abkj41#

我不知道你为什么要这样做,但你可以这样做:

# Save changes to stash
git stash save

# Remove everything left
rm -rf ./*

# Checkout (restore) all of the changed files
git stash show --stat | grep -v changed | sed -e 's/|.*$//;' | xargs git checkout

# Restore the changes to those files
git stash pop
a64a0gku

a64a0gku2#

您也可以使用更简单的命令来实现此目的:

git clean -Xfd // capital X
git clean -xfd // lower x

它将从所需的文件中清除您的工作目录。

62lalag4

62lalag43#

使用git clean是你想要的。要删除(-x)那些文件和目录(-d),运行:

$ git clean -fdx

如果你使用-X选项而不是-x,那么你告诉git忽略的文件仍然会被保留(例如构建工件)。最近版本的git需要指定“-f”(强制)或“-n”(试运行)。
你应该先运行一个模拟运行,以显示会发生什么,但实际上什么也不做:

$ git clean -ndx

我经常使用它,所以我有一个别名(添加到你的.gitconfig)来检查当你运行git clean时 * 将被删除 * 的文件。如果我忘记“git add”我想要保留的文件,它也很有用。

[alias]
     # list files that would be removed via 'clean' (non-destructive)
     ifc = clean -ndx

然后,运行git ifc(即.“ifc”=“ifclean”)显示所有未被跟踪但可以删除的内容,或者所有未被跟踪但应该添加的内容。
https://git-scm.com/docs/git-clean

nbysray5

nbysray55#

git ls-files -m | git ls-files -zX /dev/stdin | xargs -0 rm

相关问题