git push会尝试将所有本地分支推送到远程服务器,这可能是你不想要的。我有几个便利设置来处理这个:
别名“gpull”和“gpush”:
在我的〜/ .bash_profile中
get_git_branch() { echo `git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'` } alias gpull='git pull origin `get_git_branch`' alias gpush='git push origin `get_git_branch`'
因此,执行“gpush”或“gpull”将仅推送我的“当前打开”分支。
我已将以下函数添加到我的.bashrc文件中以自动执行这些任务。它确实是git push / git pull +当前分支的名称。
function gpush() { if [[ "x$1" == "x-h" ]]; then cat <<EOF Usage: gpush git: for current branch: push changes to remote branch; EOF else set -x local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"` git push ${bname} set +x fi } function gpull() { if [[ "x$1" == "x-h" ]]; then cat <<EOF Usage: gpull git: for current branch: pull changes from EOF else set -x local bname=`git rev-parse --abbrev-ref --symbolic-full-name @{u} | sed -e "s#/# #"` git pull ${bname} set +x fi }
git push origin 将推送具有匹配远程分支的本地分支上的所有更改 origin 至于 git push
git push origin
origin
git push
像 git push <remote> ,哪里 <remote> 是当前分支的远程(或原点,如果没有为当前分支配置远程)。
git push <remote>
<remote>
来自的示例部分 git-push 手册页
git-push
(2012年3月) 的 当心:默认“ matching “政策很快就会改变 (有时在git1.7.10之后) 强> :
matching
见“ 请讨论:当你不说什么推动时,“git push”应该做什么? “
的 在当前设置中 强> (即 的 push.default=matching 强> ) 的 git push 没有参数将推送本地和远程存在的所有分支具有相同的名称 强> 。 这通常适用于开发人员推送到自己的公共存储库时,但在使用共享存储库时可能会造成混淆。 提案是 的 将默认值更改为' upstream “ 强> ,即只推动当前分支,并将其推到分支git pull将拉出。 另一位候选人是' current “;这会将当前分支仅推送到同名的远程分支。 到目前为止所讨论的内容可以在这个帖子中看到:
的 在当前设置中 强> (即 的 push.default=matching 强> ) 的 git push 没有参数将推送本地和远程存在的所有分支具有相同的名称 强> 。 这通常适用于开发人员推送到自己的公共存储库时,但在使用共享存储库时可能会造成混淆。
push.default=matching
提案是 的 将默认值更改为' upstream “ 强> ,即只推动当前分支,并将其推到分支git pull将拉出。 另一位候选人是' current “;这会将当前分支仅推送到同名的远程分支。
upstream
current
到目前为止所讨论的内容可以在这个帖子中看到:
http://thread.gmane.org/gmane.comp.version-control.git/192547/focus=192694
以前的相关讨论包括:
要加入讨论,请将您的消息发送至:git@vger.kernel.org
您可以使用命令推送当前分支
git push origin HEAD
(取自 这里 )
我只是将我的代码提交到分支并将其推送到github,如下所示:
git branch SimonLowMemoryExperiments git checkout SimonLowMemoryExperiments git add . git commit -a -m "Lots of experimentation with identifying the memory problems" git push origin SimonLowMemoryExperiments
我更喜欢创建git-XXX脚本而不是使用别名,所以我可以更容易地控制它们(我们的开发人员在他们的路径上都有一个源控制的dir用于此类事情)。
这个脚本(称为 git-setpush )将设置配置值 remote.origin.push 值只会推送当前分支:
git-setpush
remote.origin.push
#!/bin/bash -eu CURRENT_BRANCH=$(git branch | grep '^\*' | cut -d" " -f2) NEW_PUSH_REF=HEAD:refs/for/$CURRENT_BRANCH echo "setting remote.origin.push to $NEW_PUSH_REF" git config remote.origin.push $NEW_PUSH_REF
请注意,正如我们正在使用的那样 Gerrit ,它将目标设定为 refs/for/XXX 推进审查部门。它还假定origin是您的远程名称。
Gerrit
refs/for/XXX
签出分支后调用它
git checkout your-branch git setpush
它显然可以适应结账,但我喜欢脚本 做一件事,做得好