获取当前分支名称以在git命令中使用

时间:2013-10-12 05:57:29

标签: git

我有时想在git命令中使用当前分支名称。例如

git push origin feature/really-long-branch-name

是否有git命令只提供分支名称,以便我可以执行以下操作?

git push origin current_branch

git rev-parse --abbrev-ref HEAD但在这种情况下这非常有用。由于分支名称经常更改,因此设置默认分支也没有用。更改git push的默认行为不是我正在寻找的,因为它仍然意味着我第一次push时必须输入完整的分支名称。

编辑:

主持人,这个问题不是骗局,所以请不要因为这个原因而关闭。请仔细阅读我问题的粗体部分。

2 个答案:

答案 0 :(得分:15)

阅读HEAD的符号参考

有许多方法可以获取当前分支的名称。最规范的是使用git-symbolic-ref(1)读取HEAD的符号引用。例如,假设您在分支上:

$ git symbolic-ref HEAD | sed 's!refs\/heads\/!!'
master

使用Ref

无论你解析它,你都可以通过调用你的shell command substitution在另一个命令中使用符号名。例如,在Bash中:

$ git log -n1 $(git rev-parse --abbrev-ref HEAD)

如果您愿意,没有理由不能使用推送或其他命令来使用此技巧。

Push.Default

如果您只想将当前分支推送到具有相同名称的远程分支,并且由于某些其他原因而未解析引用,那么您最好使用Git的 push.default 选项描述了herehere。例如:

git config push.default current

答案 1 :(得分:0)

使用HEAD

对于git push,你可以使用HEAD。

documentation

  

git push origin HEAD

     

将当前分支推送到遥控器上相同名称的便捷方法。

创建别名

对于无法使用HEAD的情况,我会为它创建一个别名。我只熟悉mac环境,这个解决方案适用于该平台,但我确信在Windows上有办法做同样的事情。

在〜/ .bash_profile中创建此别名

alias current_branch="git rev-parse --abbrev-ref HEAD"

然后,您可以通过执行

在git命令中使用它
git push origin `current_branch`