我正在尝试编写一个新的别名命令来执行以下操作:
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
就不会太多的脑力工作
定义为:
push-branch() {
git push origin "$(git rev-parse --abbrev-ref HEAD)"
}
用作:
$ push-branch
请注意,别名中不能有空格。你需要一个函数。您可以将当前的gps
别名替换为接受参数的函数:
gps() {
case "$1" in)
cb) push-branch;;
*) # whatever your current gps does ;;
esac
}
你根本不需要别名定义,这可以通过简单的函数调用来解决。
git-push-origin() {
git push origin "$(git rev-parse --abbrev-ref HEAD)"
}
只需从命令行调用函数git-push-origin
即可。您还可以将函数定义添加到.bashrc
,以便在启动时加载它们。
git 有自己的别名系统,所以你可以这样做
git config --global alias.pushCurrent '!exec git push origin $(git rev-parse --abbrev-ref HEAD)'
添加 git 命令
git pushCurrent
但是git push
应该将当前分支的头部推到原点,因此您可能有一些特殊情况来证明额外别名的合理性,您可以对其进行调整以满足您的需求
您可以使用替换$()
将一个命令的输出用作另一个命令的参数。
git push origin "$(git rev-parse --abbrev-ref HEAD)"
别名或函数名称中的空格是不可能的,但即使允许它们,我认为您也不想使用它们,因为您必须转义空格才能调用它们("gps cb"
或gps cb
(。
如果您已经定义了自己的gps
脚本,并希望它的行为因第一个参数而异,则必须使用if
或case
语句来检查第一个参数。