我正在閱讀一箇舊的部署腳本,我遇到了一陣困惑我的bash。拖拽一個git日誌
聲明如下。
if [[ \\$(git log @{u}.. 2> /dev/null | tail -n1) != '' ]];
then echo 'LOCAL BRANCH HAS UNCOMMITTED CHANGES.';
fi;
據我所知,我們正在運行一個git日誌並檢查輸出是否爲空字符串。我可能會非常失望,但這就是我要問的原因。
git log @{u}.. 2> /dev/null | tail -n1
以上是什麼是令人困惑的部分。如果我在本地repo上運行這個函數,我會得到一個空字符串作爲返回值。我不明白爲什麼。我不明白@{u}.. 2> /dev/null
是什麼意思。據我所知,2> /dev/null
將可能的錯誤重定向到位於/dev/null
的文件。但是這條線的其餘部分在做什麼?即@{u}
請注意,這裏喊出的「UNCOMMITTED」這個詞是完全錯誤的:這些是 committed *改變。他們只是被當地Git相信,不會被提交給相應的上游分支機構「@ {u}」。 – torek