【发布时间】:2016-08-23 07:07:43
【问题描述】:
我在 Linux 平台的项目中使用 git。我在特定目录中有很多文件。我修改了该目录中的上述大约 50 个文件,但没有暂存和提交。我希望从该目录中删除所有其他未修改的文件?有没有办法做到这一点,使用 git 和 Linux 命令?
【问题讨论】:
我在 Linux 平台的项目中使用 git。我在特定目录中有很多文件。我修改了该目录中的上述大约 50 个文件,但没有暂存和提交。我希望从该目录中删除所有其他未修改的文件?有没有办法做到这一点,使用 git 和 Linux 命令?
【问题讨论】:
不知道你为什么要这样做......但你可以:
# 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
【讨论】:
使用git clean 是您想要的。要删除 (-x) 这些文件和目录 (-d),请运行:
$ git -dx
如果您使用 -X 选项而不是 -x,那么您告诉 git 忽略的文件仍将保留(例如,构建工件)。
您应该首先运行以下命令,让您知道会发生什么,但实际上不执行任何操作:
$ git -ndx
我推荐一个别名(给你的.gitconfig)来检查在你运行git clean 时会被删除的文件,因为这是我经常运行的东西。提醒我没有“添加”我想要保留的文件也很有用。
[alias]
# list files that would be removed via 'clean' (non-destructive)
ifc = clean -ndx
然后,运行git ifc(即“ifc”=“如果清理”)会显示所有未被跟踪且可以删除的内容。
(编辑:这个答案假定我已经理解了这个问题;重新阅读这个问题后,我不确定是否是这样。)
【讨论】:
git reset --hard [HEAD] 应该为你重复工作
【讨论】: