尾随git日志

时间:2017-08-09 13:49:40

标签: git bash centos

我正在阅读一个旧的部署脚本,我遇到了一系列困扰我的bash。

声明如下。

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

以上是令人困惑的部分。如果我在本地仓库上运行它,我会得到一个空字符串作为返回值。我不明白为什么。我不明白@{u}.. 2> /dev/null的含义。根据我的理解,2> /dev/null将可能的错误重定向到位于/dev/null的文件。但是这条线的其余部分在做什么呢?即@{u}

1 个答案:

答案 0 :(得分:1)

正如您提到/dev/null将stderr(由POSIX定义为文件描述符2)重定向到@{u},这是忽略错误消息的常用技巧。

git log @{u}..是上游分支的快捷方式,请参阅ECMAScript specifications

git log @{u}..HEADHEAD相同。双点指定一系列提交,例如@{u}中的所有提交减去HEAD中的所有提交。

所以<BorderPane xmlns:fx="http://javafx.com/fxml"> <left> <StackPane> ... </StackPane> </left> <right> <StackPane> ... </StackPane> </right> <top> <VBox> <ToolBar> ... </ToolBar> <MenuBar> ... </MenuBar> <VBox> </top> </BorderPane> (本地分支)减去上游分支将为您提供尚未推送的本地提交。