Git - 推送当前分支快捷方式

Ela*_*lad 318 git

是否有快捷方式告诉Git将当前跟踪分支推送到原点?
注意:我知道我可以更改默认的推送行为,但我正在寻找一种不会改变默认行为的临时解决方案.

例如,假设我在feature/123-sandbox-tests我将使用的分支上

git push origin feature/123-sandbox-tests
Run Code Online (Sandbox Code Playgroud)

这很乏味.我正在寻找一条捷径,比如说

git push origin current
Run Code Online (Sandbox Code Playgroud)

git知道当前是什么feature/123-sandbox-tests.


编辑:从版本2.0开始,git的默认行为已更改为更直观的行为,这是我想要实现的.有关详细信息, 请参阅此SO问题

编辑2:ceztko的答案是最佳答案,因为它允许推送当前分支,无论设置如何.

cez*_*tko 616

根据git push文件:

git push origin HEAD
    A handy way to push the current branch to the same name on the remote.
Run Code Online (Sandbox Code Playgroud)

所以我认为你需要的是git push origin HEAD.git push -u origin HEAD如果尚未推送到原点,在本地分支中设置上游跟踪信息也很有用.

  • 我更喜欢将push.default设置为simple或current,因为不同的机器可能有不同的设置.您可能习惯于只推送当前分支的`git push`,但在其他机器上,您可能会意外地推送所有匹配的分支. (9认同)
  • 有趣的是,这不仅仅适用于`@`,它被记录为`HEAD`的有效别名.(例如`git push -u origin @`) (8认同)

Mah*_*esh 164

您可以使用以下命令配置git以推送到当前分支

git config --global push.default current
Run Code Online (Sandbox Code Playgroud)

然后就做

git push 
Run Code Online (Sandbox Code Playgroud)

这会将代码推送到您当前的分支.

  • @DavidDoria'current'不是这里命名的分支. (4认同)

小智 37

您应该在没有指定分支的"git push"的默认行为中查看类似的问题

基本上它解释了如何设置默认行为以推动当前分支执行git push.可能你需要的是:

git config --global push.default current

其他选择:

  • 没有:不要推动任何东西
  • 匹配:推送所有匹配的分支
  • 上游/跟踪:将当前分支推送到跟踪的任何分支
  • current:推送当前分支


the*_*dor 9

我在我的.bashrc配置中使用了这样的别名

alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'
Run Code Online (Sandbox Code Playgroud)

在命令中,$gpb它采用当前分支名称并将其推送到原点。

这是我的其他别名:

alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'
Run Code Online (Sandbox Code Playgroud)

  • 您将要阅读以下内容:https://git-scm.com/book/en/v2/Git-Basics-Git-Aliases (3认同)

Rya*_*ebo 7

对于它的价值,最终的捷径是:

在我.bash_profile拥有的地方alias push="git push origin HEAD",因此无论何时键入,push我都知道我要推送到当前所在的分支。


Far*_*hin 6

如果您使用的是git 1.7.x,则可以运行以下命令来设置远程跟踪分支.

git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests
Run Code Online (Sandbox Code Playgroud)

然后你可以简单地git push用来推动所有的变化.如需更完整的答案,请在此处查看类似问题的已接受答案.

如果您只想使用push命令推送当前分支,则可以将推送行为更改为上游:

git config --global push.default upstream
Run Code Online (Sandbox Code Playgroud)


Rya*_*art 5

最简单的方法:运行git push -u origin feature/123-sandbox-tests一次.这会按照您习惯的方式推送分支,并在本地配置中设置上游跟踪信息.之后,您可以git push将跟踪的分支推送到其上游远程.

您也可以在配置中自行设置branch.<branch name>.merge为远程分支名称(在本例中与本地名称相同),也可以选择branch.<branch name>.remote设置为要推送到的远程名称(默认为origin).如果你查看你的配置,很可能已经设置了其中一个master,所以你可以按照这个例子.

最后,请务必考虑push.default设置.它默认为"匹配",这可能会产生意外和意外的结果.我认识的大多数人发现"上游"更直观,只推动当前分支.

有关这些设置的详细信息,请参阅git-config手册页.

第二个想法,重新阅读你的问题,我想你知道这一切.我认为你真正想要的东西不存在.bash函数怎么样(未经测试):

function pushCurrent {
  git config push.default upstream
  git push
  git config push.default matching
}
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

129073 次

最近记录:

7 年,7 月 前