我如何从当前工作树中删除未跟踪的本地文件 ?
当前回答
哦,我,我,我,Zsh与zzsh 千兆赫通过 git 插件提供这些伟大的别名。 它们也可以在狂欢中使用 。
gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'
gclean
除去未跟踪文件之外未跟踪的目录.gpristine
硬重置本地更改, 删除未跟踪的目录, 未跟踪的文件不要使用从.gitignore( 每一个目录) 和 $GIT_ DIR/ info/ excluldude 读取的标准忽略规则, 但是仍然使用给 - e 选项的忽略规则。 这样可以删除所有未跟踪的文件, 包括构建产品。 这可以用来( 可能与 Git 重设结合) 创建一个纯净的工作目录, 测试干净的构建 。.
其他回答
git-清洁这是您正在寻找的。 它用于从工作树上移除未跟踪的文件 。
OK,OK, OK, OK, OK, OK, OK, OK, OK,OK, OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,OK,删除删除未跟踪的自定义文件及文件夹容易使用git
在命令行中,按这样做:
git clean -fd
双检查在这样做之前, 它会删除文件和文件夹, 而不创建任何历史...
在本案中-f
代表武力和-d
代表目录...
所以,如果只删除文件,您可以使用-f
仅 :
git clean -f
如果您想要删除删除(目录) 和文件, 您只能删除未跟踪的目录和文件 :
git clean -fd
还有,你也可以用-x
添加被 git 忽略的文件。 如果您想要删除所有文件, 这将很有帮助 。
并添加-i
git 请求您逐个删除文件的许可 。
如果您不确定并想要先检查事项,请添加-n
旗帜。
使用使用-q
如果您不想在成功删除后看到任何报告。
我还创造了下面的图像 让它更令人难忘 尤其是我见过很多人混淆-f
有时是用来清理文件夹或把它混为一谈的!
使用git reset HEAD <file>
以卸开一个文件
这可以用一个 shell 脚本来完成, 我用这个笔记本来列出要删除的内容, 然后让我确认操作 。
这是有用的,因为我有时有补丁 或其他文件,我想检查 之前擦走一切。
#!/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 clean -i
这代表着交互式互动您将快速了解要删除的内容, 以便您能够包含/ 排除受影响的文件。 总的来说, 仍然比执行强制任务要快--dry-run
在真正的清洁之前。
你将不得不扔在-d
如果您也想要处理空文件夹。最后,它会制作一个漂亮的别名:
git iclean
话虽如此,对有经验的用户来说,持有互动命令的手掌外握,可能会使有经验的用户感到疲劳。git clean -fd
推荐文章
- 如何在Visual Studio中删除未推送的外向提交?
- Git在两个不同的文件之间的差异
- 我如何使用vimdiff来解决git合并冲突?
- 如何将更改提交到另一个预先存在的分支
- 为什么使用'git rm'来删除文件而不是'rm'?
- 我如何安装imagemagick与自制?
- 致命:git-write-tree:错误构建树
- Git克隆远程存储库的特定版本
- git隐藏的意图用例是什么?
- 从远程Git存储库检索特定的提交
- 如何配置git bash命令行补全?
- 我如何迫使git拉覆盖每一个拉上的一切?
- 撤销“git add <dir>”?
- 是否可以在不先签出整个存储库的情况下进行稀疏签出?
- 如何移除SSH密钥?