【发布时间】:2012-06-06 02:31:01
【问题描述】:
我有一个 git 控制的目录(实际上是我的主目录),其中有被忽略的目录(例如垃圾空间,以及由其他 VCS 控制的目录)。我希望能够让我的 bash 提示符显示目录是否受版本控制,如果是,则由哪个 VCS 控制,但例如git rev-parse 将始终找到最顶层的 .git 目录。
有没有办法询问git我是否在未跟踪的目录中?
我发现这是可行的:
if ! git rev-parse 2>&/dev/null; then
echo "not in git"
else
PREFIX=$(git rev-parse --show-prefix)
if [ -z "$PREFIX" ]; then
echo "at git top level"
elif [ -z $(cd $(git rev-parse --show-toplevel); \
git ls-files -o --directory "${PREFIX%%/}")
echo "tracked by git"
else
echo "untracked"
fi
fi
但它看起来非常老套和脆弱。有没有更好的办法?
【问题讨论】:
-
Git 不跟踪目录。它只跟踪文件。
-
没错,但我可以告诉它忽略
.gitignore中的目录,所以它对它们有一些了解。 -
忽略 .gitignore 中的目录实际上只是忽略了目录中的所有文件(甚至没有递归到目录中检查否定模式的副作用)。
标签: git bash directory gitignore