Shell

zsh:檢查我目前是否在我的 git 儲存庫中(git check-ignore)

  • February 7, 2022

在我的.zshrc中,我使用以下 git 命令(來自zsh 提示:檢查是否在 git 儲存庫中並且未被 git 忽略)來檢查我是否在 git 儲存庫中,以便我可以相應地更改提示:

git check-ignore -q . 2>/dev/null
if [[ $? -eq 1 ]] ; then

但是這個命令不區分我是否擁有這個儲存庫。這可能由系統上的其他使用者擁有,我沒有寫權限。

是否可以檢查我是否擁有該.git目錄或是否具有寫入權限?

大概您關心.git目錄本身的寫權限;如果是這樣,

git check-ignore -q . 2>/dev/null
if [[ $? -eq 1 && -w "$(git rev-parse --show-toplevel)/.git" ]]; then

then僅噹噹前目錄是 git 儲存庫中的非忽略目錄時才會執行該塊,並且相關.git目錄對目前使用者是可寫的。

您也可以git rev-parse用作測試是否在 git 儲存庫中;因此,如果您不關心 git 儲存庫中被忽略的目錄,

if top="$(git rev-parse --show-toplevel 2>/dev/null)" && [ -w "$top/.git" ]; then

將確定目前工作空間的.git目錄(如果有)是否可寫。

另請參閱[ -O "$top/.git" ]以檢查您是否擁有該目錄(不是標準的,但大多數tests / shell 都支持,包括zsh

引用自:https://unix.stackexchange.com/questions/689603