我正在尝试创建仅在master是当前已签出分支的情况下才能运行的脚本...
我设法通过以下方式获得分支名称:
git rev-parse --symbolic-full-name --abbrev-ref HEAD
但是将其放在脚本中,检查其值并根据其执行某件事或其他操作并不顺利
"foo": "set branch=git rev-parse --symbolic-full-name --abbrev-ref HEAD | if [branch==master]; then echo \"yes\"; else echo \"no\"; fi;"
有什么想法吗?
答案 0 :(得分:3)
以下内容将成功运行:
npm脚本:
"scripts": {
"foo": "branch=$(git rev-parse --symbolic-full-name --abbrev-ref HEAD); if [[ $branch == \"master\" ]]; then echo \"yes\"; else echo \"no\"; fi;"
},
说明:
git
命令包装在$()
中-称为command substitution。这意味着它将运行git rev-parse ...
命令并将其输出分配给branch
变量。branch
if [[ $branch == \"master\" ]]; then ...
值进行条件检查
跨平台:
如果在非Bash环境(例如Windows npm run foo
或 PowerShell )中执行cmd.exe
命令,显然将失败。如果需要跨平台支持(我想不是!),那么我建议在 node.js 脚本中处理此逻辑,并利用child_process.execSync()
来调用{ {1}}命令。然后可以通过您的npm-script调用git
。