git clean
描述
默认从当前位置(可以通过path设置路径)通过递归清理未被版本控制(未使用过add或者commit)的文件或者文件夹。
通常只有不被版本控制的文件被删除,若指定-x则可以删除.gitignore忽略的文件。
语法
git clean [-d] [-f] [-i] [-n] [-q] [-e
-n, –dry-run
不会实际删除任何文件,只是提示哪些文件会被操作。
~/tmp/test_git$ tree . ├── a 0 directory, 1 files ~/tmp/test_git$ git clean -n Would remove a ~/tmp/test_git$ git clean -f Removing a
-f, –force
强制删除
~/tmp/test_git$ tree . ├── a ├── b └── c └── c1 1 directory, 3 files ~/tmp/test_git$ git clean -nf Would remove b ~/tmp/test_git$ git clean -ndf Would remove b Would remove c/
-d
删除未被添加到git路径的文件,.gitignore标记生效
~/tmp/test_git$ tree . ├── a ├── b ├── c │ └── c1 └── ignore 2 directories, 3 files ~/tmp/test_git$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) b c/ nothing added to commit but untracked files present (use "git add" to track) ~/tmp/test_git$ more .gitignore ignore/* ~/tmp/test_git$ git clean -n Would remove b ~/tmp/test_git$ git clean -nd Would remove b Would remove c/ Would remove ignore/ ~/tmp/test_git$ more .gitignore ignore/ ~/tmp/test_git$ git clean -n Would remove b ~/tmp/test_git$ git clean -nd Would remove b Would remove c/
-x
删除没有被track的文件,与是否 被.gitignore操作无关。
~/tmp/test_git$ tree . ├── a ├── b ├── c │ └── c1 └── ignore 2 directories, 3 files ~/tmp/test_git$ more .gitignore ignore/ ~/tmp/test_git$ git status On branch master Untracked files: (use "git add <file>..." to include in what will be committed) b c/ nothing added to commit but untracked files present (use "git add" to track) ~/tmp/test_git$ git clean -nx Would remove b ~/tmp/test_git$ git clean -ndx Would remove b Would remove c/ Would remove ignore/
-q, –quiet
不显示清理过程,或者错误。
看图找不同吧
~/tmp/test_git$ tree . ├── a ├── b ├── c │ ├── c1 │ └── c2 ├── d ├── e │ ├── e1 │ └── e2 ├── f ├── g │ └── g1 ├── h ├── ignore └── ignore_file 5 directories, 10 files ~/tmp/test_git$ git status On branch master Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: d Changes not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: b Untracked files: (use "git add <file>..." to include in what will be committed) c/ f g/ ~/tmp/test_git$ more .gitignore e/* ignore/ ignore_file fl@fl:~/tmp/test_git$ git clean -n Would remove f fl@fl:~/tmp/test_git$ git clean -nd Would remove c/ Would remove f Would remove g/ Would remove h/ fl@fl:~/tmp/test_git$ git clean -nx Would remove f Would remove ignore_file fl@fl:~/tmp/test_git$ git clean -ndx Would remove c/ Would remove e/ Would remove f Would remove g/ Would remove h/ Would remove ignore/ Would remove ignore_file
-
-n默认仅删除当前目录的文件
-
-d目标中被.gitignore过滤(e/*,ignore/)
未被版本控制的文件和文件夹
-
-x目标不受.gitignore影响(ignore_file)
当前目录中说有文件,不包含文件夹
-
-dx是-d和-x的并集,扩大版
不受.gitignore影响
未被track的文件和文件夹
本文来自博客园,作者:flxx,转载请注明原文链接:https://www.cnblogs.com/faithlocus/p/16412021.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 25岁的心里话