我对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
}
答案 0 :(得分:2)
git push -u origin $(git branch | grep '\*' | cut -d ' ' -f2)
这应该可以完成工作。管道将前一个命令的输出传递给下一个命令的stdin,而不是作为命令行arg。
您也许还可以使用xargs
(man page)