我正在尝试编写一个执行以下操作的新别名命令:
git push origin [current branch]
我有以下内容返回当前分支
git rev-parse --abbrev-ref HEAD
我无法解决:
a)如何将两个命令添加到一行,而不是让它们以程序方式运行。例如,返回当前分支,然后在一行上运行它。我尝试了以下别名:
alias "gps cb"="git push origin \"git rev-parse --abbrev-ref HEAD\""
b)如何在其中添加一个带有空格的别名,例如gps cb
,我只有一个单独的gps
所以我宁愿在别名中保留一个空格的模式,所以写gps master
和gps cb
答案 0 :(得分:3)
定义为:
push-branch() {
git push origin "$(git rev-parse --abbrev-ref HEAD)"
}
用作:
$ push-branch
请注意aliases cannot have spaces in them.您需要一个功能。您可以使用带参数的函数替换当前的gps
别名:
gps() {
case "$1" in)
cb) push-branch;;
*) # whatever your current gps does ;;
esac
}
答案 1 :(得分:2)
您根本不需要别名定义,可以通过简单的函数调用来解决。
git-push-origin() {
git push origin "$(git rev-parse --abbrev-ref HEAD)"
}
然后从命令行调用函数git-push-origin
。您还可以将函数定义添加到.bashrc
以在启动时加载它们。
答案 2 :(得分:1)
git拥有自己的别名系统,所以你可以做到
git config --global alias.pushCurrent '!exec git push origin $(git rev-parse --abbrev-ref HEAD)'
添加了git命令
git pushCurrent
但只是git push
应该将当前分支的头部推到原点,所以你可能有一些特殊情况来证明额外的别名,你可以调整它以满足你的需求
答案 3 :(得分:0)
您可以使用替换$()
将一个命令的输出用作另一个命令的参数。
git push origin "$(git rev-parse --abbrev-ref HEAD)"
别名或函数名称中的空格是不可能的,但即使它们被允许,我也不认为你会想要使用它们,因为你必须逃离空间才能调用它们("gps cb"
或gps\ cb
)。
如果您已经定义了自己的gps
脚本并希望它的行为与第一个参数不同,则必须使用if
或case
语句来检查第一个参数