如何从当前工作树中删除未追踪的本地文件?
当前回答
我认为最安全、最容易的方式就是这样!
git add .
git stash
更多信息 https://www.atlassian.com/git/tutorials/saving-changes/git-stash#stashing-your-work
其他回答
更好的方法是使用: git clean
git clean -d -x -f
这将删除未追踪的文件,包括目录(d)和由 git(x)忽略的文件。
此外,将 -f 论点替换为 -n 以进行干燥运行或 -i 为互动模式,它会告诉你什么将被删除。
使用 git clean -f -d 确保目录也被删除。
实际上不要删除任何东西,只需显示会发生什么。 git clean -n 或 git clean --dry-run 除去不跟踪的目录除了不跟踪的文件. 如果一个不跟踪的目录由另一个 Git 存储库管理,它不会默认删除。
然后,您可以检查您的文件是否真的失去了 git 状态。
这是我一直使用的:
git clean -fdx
对于一个非常大的项目,你可能想运行它几次。
命令从 git docs 删除 Untracked 文件是 git clean
git clean - 从工作树中删除未追踪的文件
可用的选项:
git clean
-d -f -i -n -q -e -x -X (can use either)
解释:
1 - D
除未追踪的目录外,除未追踪的文件外,除未追踪的目录外,除未追踪的目录外,除非由另一个 Git 存储库管理,则不会默认删除。
如果 Git 配置变量 clean.requireForce 未设置为虚假,则 git clean 将拒绝运行,除非提供 -f、 -n 或 -i。
3 -i, - 互动
4 -n, -dry-run
5 -q, - 放心
保持沉默,只报告错误,但不是成功删除的文件。
除了在.gitignore (每个目录) 和 $GIT_DIR/info/exclude 中找到的外,还考虑这些模式在无效的规则中。
7、X
8、X
删除仅由 Git 忽略的文件,这可能有助于重建一切,但保持手动创建的文件。
这可以用一个阴影脚本进行,我使用这个脚本列出什么将被删除,然后让我确认操作。
这是有用的,因为有时我有插件或其他文件我会喜欢检查之前删除一切。
#!/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添加?
- Rubymine:如何让Git忽略Rubymine创建的.idea文件
- Gitignore二进制文件,没有扩展名
- Git隐藏错误:Git隐藏弹出并最终与合并冲突
- 了解Git和GitHub的基础知识
- 没有。Git目录的Git克隆
- 在GitHub上有一个公共回购的私人分支?
- Git与Mercurial仓库的互操作性
- 忽略git中修改(但未提交)的文件?
- “git restore”命令是什么?“git restore”和“git reset”之间有什么区别?
- Git合并与强制覆盖
- Git拉另一个分支
- 在Bash命令提示符上添加git分支
- 如何更改Git日志日期格式