git clean 删除空目录
git clean removes empty directories
这是我所做的:
$ git status
# I see some files *and* directories (some tracked, some not) which I really wanted to discard
$ git clean -xd
我很惊讶 git 删除了一些其他目录,这些目录在 git status
中没有显示。在最初的 schock 之后(这是我的 /etc
在我的一个生产主机中)我意识到它们没有被 git 列出,因为它们是空目录(所以没什么大不了的,只是 mkdir
他们 - 希望获得正确的权限)。这很好,但是:
为什么 git 在做 git status
时不考虑空目录,而在做 git clean
时却考虑空目录?这很烦人(而且很危险)!
您似乎已经知道:您不能在 git 中添加空目录(如果不是 see the FAQ)。
git status
有效地告诉您可以添加 和提交 哪些更改。因此,即使 git status
可以显示空目录,这也会让用户非常困惑。
Why can I see this directory but not track it?
另一方面,git clean
会删除所有 未被跟踪的内容 。使用 -d
选项还会告诉 clean
删除 未跟踪的目录 .
但是什么定义了未跟踪的目录?
据我们了解,git 不跟踪目录,它跟踪文件(或更具体的文件内容)。反过来,这意味着 未跟踪的目录 只不过是一个不包含任何 跟踪的文件 的目录。这适用于您忽略了数百个文件的 build
文件夹,就像您之前创建但忘记的空 tmp
文件夹一样。
如果您想确保 git clean
不会删除您想要保留的任何内容,您应该使用 -n
(--dry-run
) 选项 (which is described in the documentation ).这会告诉您 git clean
将删除的所有文件。
为确保您不会忘记 -n
(--dry-run
),您可以创建一个别名。
git config --global alias.status-clean "clean --dry-run"
您现在可以像 git status-clean -dx
一样轻松地使用它来显示将被 git clean -dx
调用删除的所有文件。
TL;DR: 不要使用 git status
看看 git clean -d
会删除什么。使用 git clean -d --dry-run
.
这是我所做的:
$ git status
# I see some files *and* directories (some tracked, some not) which I really wanted to discard
$ git clean -xd
我很惊讶 git 删除了一些其他目录,这些目录在 git status
中没有显示。在最初的 schock 之后(这是我的 /etc
在我的一个生产主机中)我意识到它们没有被 git 列出,因为它们是空目录(所以没什么大不了的,只是 mkdir
他们 - 希望获得正确的权限)。这很好,但是:
为什么 git 在做 git status
时不考虑空目录,而在做 git clean
时却考虑空目录?这很烦人(而且很危险)!
您似乎已经知道:您不能在 git 中添加空目录(如果不是 see the FAQ)。
git status
有效地告诉您可以添加 和提交 哪些更改。因此,即使 git status
可以显示空目录,这也会让用户非常困惑。
Why can I see this directory but not track it?
另一方面,
git clean
会删除所有 未被跟踪的内容 。使用 -d
选项还会告诉 clean
删除 未跟踪的目录 .
但是什么定义了未跟踪的目录?
据我们了解,git 不跟踪目录,它跟踪文件(或更具体的文件内容)。反过来,这意味着 未跟踪的目录 只不过是一个不包含任何 跟踪的文件 的目录。这适用于您忽略了数百个文件的 build
文件夹,就像您之前创建但忘记的空 tmp
文件夹一样。
如果您想确保 git clean
不会删除您想要保留的任何内容,您应该使用 -n
(--dry-run
) 选项 (which is described in the documentation ).这会告诉您 git clean
将删除的所有文件。
为确保您不会忘记 -n
(--dry-run
),您可以创建一个别名。
git config --global alias.status-clean "clean --dry-run"
您现在可以像 git status-clean -dx
一样轻松地使用它来显示将被 git clean -dx
调用删除的所有文件。
TL;DR: 不要使用 git status
看看 git clean -d
会删除什么。使用 git clean -d --dry-run
.