我正在阅读一个旧的部署脚本,我遇到了一阵困惑我的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