我确实看到了一些相关的问题,但我没有找到针对我的具体案例的解决方案。在我的情况下,我得到了一些未跟踪的文件和文件夹(不是git-ignored),以及.gitignore
中声明的一些其他文件和文件夹。我想删除所有非git-ignored,未跟踪的文件和文件夹,并保留所有被git忽略的文件和文件夹。
如果我使用git clean -f
,则未删除的文件将会消失,而文件夹仍会保留。如果运行git clean -df
,git-ignored文件夹将与非git-ignored的文件夹一起删除。
我该怎么办?
提前致谢。
答案 0 :(得分:1)
我认为您对git clean
选项感到困惑。
git-clean -d
清除目录和文件。git-clean -x
阻止git处理.gitignore
git-clean -X
仅删除被忽略的文件git-clean -f
只是一种强制选择。因此git clean -df
的默认行为是删除除之外的文件和文件夹。这似乎是你要求的。
演示:
amb@nimrod-ubuntu:~/so/git$ mkdir tmp
amb@nimrod-ubuntu:~/so/git$ cd tmp
amb@nimrod-ubuntu:~/so/git/tmp$ git init
Initialized empty Git repository in /home/amb/so/git/tmp/.git/
amb@nimrod-ubuntu:~/so/git/tmp$ echo "foo" > bar
amb@nimrod-ubuntu:~/so/git/tmp$ mkdir baz
amb@nimrod-ubuntu:~/so/git/tmp$ echo "baz" > baz/bob
amb@nimrod-ubuntu:~/so/git/tmp$ echo "bar" > .gitignore
amb@nimrod-ubuntu:~/so/git/tmp$ echo "baz" >> .gitignore
amb@nimrod-ubuntu:~/so/git/tmp$ echo ".gitignore" >> .gitignore
amb@nimrod-ubuntu:~/so/git/tmp$ ls -la
total 24
drwxrwxr-x 4 amb amb 4096 Dec 3 08:13 .
drwxrwxr-x 3 amb amb 4096 Dec 3 08:12 ..
-rw-rw-r-- 1 amb amb 4 Dec 3 08:13 bar
drwxrwxr-x 2 amb amb 4096 Dec 3 08:13 baz
drwxrwxr-x 7 amb amb 4096 Dec 3 08:12 .git
-rw-rw-r-- 1 amb amb 19 Dec 3 08:14 .gitignore
amb@nimrod-ubuntu:~/so/git/tmp$ ls -la baz
total 12
drwxrwxr-x 2 amb amb 4096 Dec 3 08:13 .
drwxrwxr-x 4 amb amb 4096 Dec 3 08:13 ..
-rw-rw-r-- 1 amb amb 4 Dec 3 08:13 bob
amb@nimrod-ubuntu:~/so/git/tmp$ git clean -df
amb@nimrod-ubuntu:~/so/git/tmp$ ls -la
total 24
drwxrwxr-x 4 amb amb 4096 Dec 3 08:13 .
drwxrwxr-x 3 amb amb 4096 Dec 3 08:12 ..
-rw-rw-r-- 1 amb amb 4 Dec 3 08:13 bar
drwxrwxr-x 2 amb amb 4096 Dec 3 08:13 baz
drwxrwxr-x 7 amb amb 4096 Dec 3 08:12 .git
-rw-rw-r-- 1 amb amb 19 Dec 3 08:14 .gitignore
amb@nimrod-ubuntu:~/so/git/tmp$ ls -la baz
total 12
drwxrwxr-x 2 amb amb 4096 Dec 3 08:13 .
drwxrwxr-x 4 amb amb 4096 Dec 3 08:13 ..
-rw-rw-r-- 1 amb amb 4 Dec 3 08:13 bob