当前分支上的Git别名
我想改进当前的别名,其中大多数都在分支上工作。 有没有办法在git别名中引用当前分支,所以我不需要每次都传递它?当前分支上的Git别名
像这样的:
git config alias.po "push origin"
是使用这样的:
git po foo_branch
我想只要运行git po
,并采取当前分支作为参数。
这个答案将是有效的混帐2.0,其中默认的推动行为将simple
除非push.default
设置为matching
,git push
没有指定参数将始终推动当前分支开始,所以在这你不需要指定它。
从您的问题中,您不需要明确说明这两个别名中的哪一个。
这将推动当前已签出分支:
git config alias.po !f() { export tmp_branch=`git branch | grep '* ' | tr -d '* '` && git push origin $tmp_branch; unset $tmp_branch; }; f
这将推动这个分支名称(git po branchName
):
git config alias.po !f() { git push origin $1; }; f
我不知道任何内置的方式,但你可以用shell别名做:
alias gpo='git push origin "$(git-current-branch 2> /dev/null)"'
其中git-current-branch
被定义为f ollows:
git-current-branch() {
if ! git rev-parse 2> /dev/null
then
print "$0: not a repository: $PWD" >&2
return 1
fi
local ref="$(git symbolic-ref HEAD 2> /dev/null)"
if [[ -n "$ref" ]]
then
print "${ref#refs/heads/}"
return 0
else
return 1
fi
}
无耻地从Prezto无耻地采取。
[alias]
po = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\""
很好的答案!唯一需要注意的是,我直接从命令行执行此操作,并将当前分支硬编码到命令行中:) Direclty在配置文件中做了它,它工作得很好。 – CubanX 2014-02-08 15:30:30
为什么在'!git'中爆炸?我知道什么是爆炸 - 什么在bash中,只是不知道你为什么要在这里。 – 2014-05-22 20:14:22
bang允许您执行shell中的所有内容,即允许您执行任何命令,而不仅仅是别名中的git命令。 – 2015-03-04 17:37:53
git rev-parse --abbrev-ref HEAD是我用来驱动当前分支的东西。 – Learath2 2013-02-27 12:46:25