当前分支上的Git别名

plu*_*us- 21 git

我想改进我目前的别名,大多数都是在分支上工作.有没有办法在git别名中引用当前分支,所以我不需要每次都传递它?

像这个:

git config alias.po "push origin"
Run Code Online (Sandbox Code Playgroud)

是这样使用它:

git po foo_branch
Run Code Online (Sandbox Code Playgroud)

我想运行git po它并将当前分支作为参数.

jmg*_*ier 54

[alias]
  po = "!git push --set-upstream origin \"$(git rev-parse --abbrev-ref HEAD)\""
Run Code Online (Sandbox Code Playgroud)

  • bang允许你在shell中执行它之后的所有内容,即允许你执行任何命令,而不仅仅是别名中的git命令. (3认同)
  • 为什么在`!git`中爆炸?我知道bash中有什么特别的东西,只是不确定你为什么要在这里. (2认同)
  • 伟大的。此外,在 https://gist.github.com/robmiller/6018582,您可以找到一组漂亮的别名(包括适合作为 OP 问题答案的别名) (2认同)

lun*_*orn 9

git symbolic-ref --short HEAD 打印当前分支,因此您可以定义一个简单的 shell 别名:

alias gpo='git push origin "$(git symbolic-ref --short HEAD)"'
Run Code Online (Sandbox Code Playgroud)


Cha*_*esB 7

这个答案从 Git 2.0 开始有效,默认的推送行为是simple

除非push.default将设置设置为matchinggit push否则不指定参数将始终推送当前分支,因此在这种情况下您不需要指定它。

  • 好吧,还有一个“current”值:“git config --global push.default current”,这就是我处理它的方式(对我来说是 git 1.8) (4认同)
  • -1:我认为这是不正确的。`git push` 的默认操作取决于 `.gitconfig` 中的 `push.default` 设置。 (3认同)