Git推送:为分支设置目标
我想推动我目前的分支(hp1)与 而不是Git推送:为分支设置目标,git,Git,我想推动我目前的分支(hp1)与 而不是 git push origin hp1:team/hp1 远程分支已存在 我在当地的分支机构: develop master * hp1 git remote show origin告诉我: Remote branches: develop tracked master tracked team/h2 tracked team/hp1 tracked team/n1 tracked Local branches conf
git push origin hp1:team/hp1
远程分支已存在
我在当地的分支机构:
develop
master
* hp1
git remote show origin告诉我:
Remote branches:
develop tracked
master tracked
team/h2 tracked
team/hp1 tracked
team/n1 tracked
Local branches configured for 'git pull':
develop merges with remote develop
master merges with remote master
hp1 merges with remote team/hp1
Local refs configured for 'git push':
master pushes to master (up to date)
我已经试过了
git branch --set-upstream hp1 origin/team/hp1
及
但两者都不起作用
我的同事有一个称为远程分支(team/hp1)的本地分支,上面的代码适用于他。最后他得到了一份额外的工作
Local refs configured for 'git push':
develop pushes to develop (up to date)
master pushes to master (up to date)
team/hp1 pushes to team/hp1 (up to date)
所以也许你可以告诉我哪里出了问题,以及如何解决
编辑
我的配置:
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
fetch = +refs/heads/*:refs/remotes/origin/*
url = ***@***:***.git
[branch "master"]
remote = origin
merge = refs/heads/master
[branch "hp1"]
remote = origin
merge = refs/heads/team/hp1
使用
-u
选项来git push
:
$ git push -u origin hp1:team/hp1
然后,在此之后,您可以执行以下操作:
$ git push
首先,当第一次推动时,请执行以下操作:
git push -u origin hp1:team/hp1
关于-u选项:
-u--逆流而上 对于每个最新或成功推送的分支,添加 上游(跟踪)引用,由无参数git pull(1)和 其他命令。有关详细信息,请参见分支..合并到 git配置(1) 请注意,从手册中可以看出,这本身并不能决定下次执行git push时会发生什么。当您在这个分支中执行git pull时,它将从您设置的上游获取它。但当您推送时,它将推送到匹配的分支(在本例中是hp1而不是team/hp1) 为此,必须将
push.default
config值设置为上游
。一旦你设置了这个参数,当你从一个分支推送时(只需执行git push
),它就会像branch..merge
我们也要这样做:
git config push.default upstream
关于push.default:
push.default
定义git push在服务器上未提供refspec时应采取的操作
命令行中,远程中未配置任何参照规范,也未配置任何参照规范
由命令行中给定的任何选项暗示。可能的
价值观是:
没有-不要推任何东西
匹配-推送所有匹配的分支。所有具有相同分支的分支
两端的名称被认为是匹配的。这是默认设置
上游-将当前分支推送到其上游分支
跟踪-已弃用的上游同义词
当前-将当前分支推送到同名分支
(2012年3月):小心:“上游”政策可能很快成为默认政策(在git1.7.10+之后的某个时间): 见“ 在当前设置中(即
push.default=matching
),不带参数的git push
将推送本地和远程存在的同名分支当开发人员推送到自己的公共存储库时,这通常是合适的,但如果使用共享存储库不危险的话,这可能会造成混乱 建议将默认值更改为“
上游”
,即仅推送当前分支,并将其推送至git pull将从中提取的分支。另一个候选者是“
current
”;这将仅将当前分支推送到同名的远程分支
到目前为止所讨论的内容可以在本主题中看到:
先前的相关讨论包括:
以下内容将允许用户不必为第一次
git推送指定-u${branch\u name}
git config "branch.${branch_name}.remote" origin
git config "branch.${branch_name}.merge" "refs/heads/${branch_name}"
诚然,它需要更多的输入,但当它位于设置工作区的脚本中时就不需要了。它也不会过早地将分支推送到远程回购。对我来说,它只是更改了git pull
的配置,git push
的配置仍然是相同的(没有为分支hp1设置推目标)你能发布配置文件吗?thx,很好的解释!另外,我现在明白了为什么它在没有设置push.default的情况下为我的同事工作了。push.default的另一个值很简单-类似于上游,但如果上游分支的名称与本地分支的名称不同,则拒绝推送。git 2.0将更改git推送的默认行为,但仅更改为“简单”我认为它不会满足你的要求。看@AlexanderBird是的,你是对的。我已经记录了自:。
git config push.default upstream
git config "branch.${branch_name}.remote" origin
git config "branch.${branch_name}.merge" "refs/heads/${branch_name}"