在bash中为git命令提供参数

时间:2019-01-28 15:51:10

标签: bash git

我对bash不太了解,我目前有这个别名:

alias pushAndTrackBranch="git push -u origin" #Append branchname

此后我在其中手动输入git分支名称的地方。我想自动使用当前分支,所以我发现:

git branch | grep \* | cut -d ' ' -f2

并尝试将它们这样组合:

git branch | grep \* | cut -d ' ' -f2 | git push -u origin
git push -u origin | git branch | grep \* | cut -d ' ' -f2
git branch | grep \* | cut -d ' ' -f2 | pushAndTrackBranch
git branch | grep \* | cut -d ' ' -f2 | echo | pushAndTrackBranch

不是很幸运,所以我想作为bash_profile的开始,我将分支名称分配给变量并打印出来:

function pushAndTrack {
  myBranch=$(grep \* | cut -d ' ' -f2)
  echo myBranch
}

以上是我最近的化身,但这是不正确的。如何将这两件事放在一起?而且我应该将分支名称保存在变量中吗?

编辑:我在函数尝试中看到我忘记了尝试保存在变量中的部分命令。当然应该是:

function pushAndTrack {
  myBranch=$(git branch | grep \* | cut -d ' ' -f2)
  echo $myBranch
}

1 个答案:

答案 0 :(得分:2)

git push -u origin $(git branch | grep '\*' | cut -d ' ' -f2)

这应该可以完成工作。管道将前一个命令的输出传递给下一个命令的stdin,而不是作为命令行arg。

您也许还可以使用xargs (man page)