是否有快捷方式告诉Git将当前跟踪分支推送到原点?
注意:我知道我可以更改default push behavior,但我正在寻找一种不会改变默认行为的临时解决方案。
例如,假设我在分支feature/123-sandbox-tests
我将使用
git push origin feature/123-sandbox-tests
这很乏味。我正在寻找一个捷径,比如
git push origin current
git知道当前是feature/123-sandbox-tests
。
编辑:从版本2.0开始,git的默认行为已更改为更直观的行为,这是我想要实现的。有关详细信息,请参阅This SO question。
编辑2 :ceztko's answer是最佳答案,因为它允许推送当前分支,无论设置如何。
答案 0 :(得分:538)
根据git push
文件:
git push origin HEAD
A handy way to push the current branch to the same name on the remote.
所以我认为你需要的是git push origin HEAD
。如果您尚未推送到原点,那么在本地分支中设置上游跟踪信息也很有用{/ p}。
答案 1 :(得分:138)
您可以配置git 以使用以下命令推送到当前分支
git config --global push.default current
然后就这样做
git push
这会将代码推送到当前分支。
答案 2 :(得分:23)
您应该在Default behavior of "git push" without a branch specified
中查看类似的问题基本上它解释了如何设置默认行为以推送当前分支执行git push
。可能你需要的是:
git config --global push.default current
其他选择:
答案 3 :(得分:6)
如果您使用的是git 1.7.x,则可以运行以下命令来设置远程跟踪分支。
git branch --set-upstream feature/123-sandbox-tests origin/feature/123-sandbox-tests
然后,您只需使用git push
即可推送所有更改。如需更完整的答案,请参阅accepted answer to a similar question here.
如果您只想使用push命令推送当前分支,那么您可以将推送行为更改为上游:
git config --global push.default upstream
答案 4 :(得分:5)
最简单的方法:运行git push -u origin feature/123-sandbox-tests
一次。这会按照您习惯的方式推送分支,并在本地配置中设置上游跟踪信息。之后,您可以git push
将跟踪的分支推送到其上游远程。
您也可以通过将branch.<branch name>.merge
设置为远程分支名称(在您的情况下与本地名称相同)并且可选地将branch.<branch name>.remote
设置为远程名称来自行配置想要推送(默认为原点)。如果你查看你的配置,很可能已经为master
设置了其中一个,所以你可以按照这个例子。
最后,请务必考虑push.default
设置。它默认为“匹配”,这可能会产生意外和意外的结果。我认识的大多数人发现“上游”更直观,只推动当前分支。
有关这些设置的详细信息,请参阅git-config man page。
第二个想法,重新阅读你的问题,我想你知道这一切。我认为你真正想要的东西不存在。 bash函数怎么样(未经测试):
function pushCurrent {
git config push.default upstream
git push
git config push.default matching
}
答案 5 :(得分:4)
为了它的价值,最终的捷径:
在.bash_profile
alias push="git push origin HEAD"
我有push
,所以每当我输入{{1}}时,我都知道我正在推进我正在使用的当前分支。
答案 6 :(得分:4)
我在.bashrc配置
中使用了这样的别名alias gpb='git push origin `git rev-parse --abbrev-ref HEAD`'
在命令$gpb
上,它获取当前分支名称并将其推送到原点。
以下是我的其他别名:
alias gst='git status'
alias gbr='git branch'
alias gca='git commit -am'
alias gco='git checkout'
答案 7 :(得分:0)
在ceztko的回答的帮助下,我写了这个小助手功能,让我的生活更轻松:
function gpu()
{
if git rev-parse --abbrev-ref --symbolic-full-name @{u} > /dev/null 2>&1; then
git push origin HEAD
else
git push -u origin HEAD
fi
}
它将当前分支推送到原点,并设置远程跟踪分支(如果尚未设置)。