用于检查当前git branch ="x"的bash脚本

Ale*_*lls 18 git bash shell sh

我非常擅长shell脚本(使用bash),我正在寻找一种方法来检查当前git分支是否为"x",如果不是"x"则中止脚本.

    #!/usr/bin/env bash

    CURRENT_BRANCH="$(git branch)"
    if [[ "$CURRENT_BRANCH" -ne "master" ]]; then
          echo "Aborting script because you are not on the master branch."
          return;      # I need to abort here!
    fi

    echo "foo"
Run Code Online (Sandbox Code Playgroud)

但这不太对

kni*_*ttl 38

使用git rev-parse --abbrev-ref HEAD来获得当前分支的名字.

然后,只需简单地比较脚本中的值:

BRANCH=$(git rev-parse --abbrev-ref HEAD)
if [[ "$BRANCH" != "x" ]]; then
  echo 'Aborting script';
  exit 1;
fi

echo 'Do stuff';
Run Code Online (Sandbox Code Playgroud)

  • 旁注:`git rev-parse --abbrev-ref HEAD` 是这种情况下的正确方法,如果 HEAD 当前已分离,您希望返回某些内容(而不是错误)。要区分分离的 HEAD 情况,请改用`git符号引用 HEAD`。 (3认同)
  • 作为一个衬里:`[[$(git rev-parse --abbrev-ref HEAD)==“ master”]] && echo“ on master”` (2认同)

Pan*_*tes 6

一种选择是解析git branch命令的输出:

BRANCH=$(git branch | sed -nr 's/\*\s(.*)/\1/p')

if [ -z $BRANCH ] || [ $BRANCH != "master" ]; then
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

但是使用 git 内部命令只获取@knittl 建议的活动分支名称的变体不太容易出错且更可取