基本上,我的.bash_profile,我想擁有的東西的程度:測試,如果目前的回購協議下的Git Bash中
[[ __gitdir ]] && echo 'foo'
其中,如果__gitdir是真實的和/或返回任何東西,我將呼應FOO。我已經嘗試了幾件事情,並且非常感謝任何幫助,謝謝!
基本上,我的.bash_profile,我想擁有的東西的程度:測試,如果目前的回購協議下的Git Bash中
[[ __gitdir ]] && echo 'foo'
其中,如果__gitdir是真實的和/或返回任何東西,我將呼應FOO。我已經嘗試了幾件事情,並且非常感謝任何幫助,謝謝!
我想你想
git rev-parse --show-toplevel &>/dev/null
雖然你的問題的措辭混淆了我一下。當在Git倉庫中的任何地方運行時,它將成功(返回0),否則將失敗(返回非零),但不會產生輸出,因此適用於鏈接&&
或與if
一起使用。
請注意,這不在[[ ... ]]
測試中,例如,
git rev-parse --show-toplevel &>/dev/null && echo "$PWD is in a Git repo." || echo "$PWD is not in a Git repo."
會宣告當前工作目錄是否在Git倉庫中。
是這樣做的(然後用..或者../.git來做),但是我想象這在幾個級別之後是低效的(並且我計劃在每次更改目錄時都運行這個) – user2251284
這是* not * the與'__gitdir'相同。 '__gitdir'命令似乎等同於'git rev-parse --top-level'。即,當PWD位於Git倉庫中的任何位置時,'__gitdir'成功,而[[-d .git]'只能在Git倉庫的頂層運行。 – ntc2
沒錯,我想把所有的(或者至少是5個)關卡放到一個目錄中 – user2251284
這樣做的好處是什麼(__gitdir&>/dev/null && echo「foo」)?兩者似乎都有效。感謝您的時間! – user2251284
哦,我甚至沒有意識到'__gitdir'是一個文字函數!我認爲這只是你製作的一個名字,而你正在尋找這樣一個功能的實現。但是,我仍然認爲'git rev-parse'方法更好,因爲它更強大:它不依賴於正在安裝的Git完成。的確,[Git完成並沒有爲所有人安裝](http://stackoverflow.com/questions/8314674/bash-gitdir-command-not-found-error-in-terminal)。 – ntc2