我有一個git受控目錄(實際上是我的主目錄),其中有忽略的目錄(例如垃圾空間和由其他VCS控制的目錄)。我希望能夠讓我的bash提示符顯示一個目錄是否受版本控制,如果是這樣,通過哪個VCS,但例如git rev-parse
將始終找到最上面的.git
目錄。如何判斷當前工作目錄是否被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
但是它似乎非常的hackish而脆。有沒有更好的辦法?
Git不跟蹤目錄。它只跟蹤文件。 –
沒錯,但我可以告訴它忽略'.gitignore'中的目錄,所以它對它們有一定的瞭解。 – ecatmur
忽略.gitignore中的目錄實際上只是忽略目錄中的所有文件(具有甚至不遞歸到目錄以檢查否定模式的副作用)。 –