![](/img/trans.png)
[英]Creating a git alias containing bash command substitution and an argument
[英]Supply argument to git command in bash
我不太了解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
}
git push -u origin $(git branch | grep '\*' | cut -d ' ' -f2)
这应该做的工作。 管道将前一个命令的输出传递给下一个命令的stdin,而不是作为命令行arg。
您也许还可以使用xargs
(手册页)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.