如何从当前工作树中删除未追踪的本地文件?
当前回答
使用 git clean -f -d 确保目录也被删除。
实际上不要删除任何东西,只需显示会发生什么。 git clean -n 或 git clean --dry-run 除去不跟踪的目录除了不跟踪的文件. 如果一个不跟踪的目录由另一个 Git 存储库管理,它不会默认删除。
然后,您可以检查您的文件是否真的失去了 git 状态。
其他回答
正常的 git 清洁命令不会用我的 git 版本 2.9.0.windows.1 删除未追踪的文件。
$ git clean -fdx # doesn't remove untracked files
$ git clean -fdx * # Append star then it works!
这可以用一个阴影脚本进行,我使用这个脚本列出什么将被删除,然后让我确认操作。
这是有用的,因为有时我有插件或其他文件我会喜欢检查之前删除一切。
#!/bin/bash
readarray -t -d '' FILES < <(git ls-files -z --other --directory)
if [ "$FILES" = "" ]; then
echo "Nothing to clean!"
exit 0
fi
echo -e "Dirty files:\n"
printf ' %s\n' "${FILES[@]}"
DO_REMOVE=0
while true; do
echo ""
read -p "Remove ${#FILES[@]} files? [y/n]: " choice
case "$choice" in
y|Y )
DO_REMOVE=1
break ;;
n|N )
echo "Exiting!"
break ;;
* ) echo "Invalid input, expected [Y/y/N/n]"
continue ;;
esac
done
if [ "$DO_REMOVE" -eq 1 ];then
echo "Removing!"
for f in "${FILES[@]}"; do
rm -rfv -- "$f"
done
fi
删除未追踪的文件的简单方法
要删除所有未追踪的文件,简单的方式是先添加所有文件并重新设置下面的复制文件。
git add --all
git reset --hard HEAD
git-clean 是你正在寻找的,它被用来从工作树中删除未追踪的文件。
如果未追踪的目录是自己的 git 存储库(例如子模块),您需要使用 -f 两次:
清洁 -d -f -f
推荐文章
- Git分支之间的视觉差异
- 在GitHub中编辑git提交消息
- 是否有可能' git状态'只修改文件?
- Git:如何区分两个不同的文件在不同的分支?
- 如何从远程Git存储库中提取并覆盖本地存储库中的更改?
- Github:导入上游分支到fork
- Mercurial:我可以重命名分支吗?
- Git单次修订的日志
- Git在不改变提交时间戳的情况下进行改基
- VS 2017 Git本地提交数据库。每次提交时锁定错误
- 如何在过去的一些任意提交之间注入一个提交?
- 从GitHub克隆项目后拉git子模块
- GitHub上的分叉和克隆有什么区别?
- 递归地按模式添加文件
- 我如何使用notepad++(或其他)与msysgit?