我有时想在git命令中使用当前分支名称。例如
git push origin feature/really-long-branch-name
是否有git命令只提供分支名称,以便我可以执行以下操作?
git push origin current_branch
有git rev-parse --abbrev-ref HEAD
但在这种情况下这非常有用。由于分支名称经常更改,因此设置默认分支也没有用。更改git push
的默认行为不是我正在寻找的,因为它仍然意味着我第一次push
时必须输入完整的分支名称。
编辑:
主持人,这个问题不是骗局,所以请不要因为这个原因而关闭。请仔细阅读我问题的粗体部分。
答案 0 :(得分:15)
有许多方法可以获取当前分支的名称。最规范的是使用git-symbolic-ref(1)读取HEAD的符号引用。例如,假设您在主分支上:
$ git symbolic-ref HEAD | sed 's!refs\/heads\/!!'
master
无论你解析它,你都可以通过调用你的shell command substitution在另一个命令中使用符号名。例如,在Bash中:
$ git log -n1 $(git rev-parse --abbrev-ref HEAD)
如果您愿意,没有理由不能使用推送或其他命令来使用此技巧。
如果您只想将当前分支推送到具有相同名称的远程分支,并且由于某些其他原因而未解析引用,那么您最好使用Git的 push.default 选项描述了here和here。例如:
git config push.default current
答案 1 :(得分:0)
对于git push,你可以使用HEAD。
git push origin HEAD
将当前分支推送到遥控器上相同名称的便捷方法。
对于无法使用HEAD的情况,我会为它创建一个别名。我只熟悉mac环境,这个解决方案适用于该平台,但我确信在Windows上有办法做同样的事情。
在〜/ .bash_profile中创建此别名
alias current_branch="git rev-parse --abbrev-ref HEAD"
然后,您可以通过执行
在git命令中使用它git push origin `current_branch`