Git 主机的默认遥控器!=我创建的任何分支的默认远程
假设我有两个遥控器:Git 主机的默认遥控器!=我创建的任何分支的默认远程,git,Git,假设我有两个遥控器: * official (this is the official repo, no write permission) * my_fork (write permission) 我想将我的master分支的默认遥控器设置为official(这样我可以轻松跟踪那里的更改),并将my_fork设置为我创建的任何分支的默认遥控器 如何使用我的.git/config或git-config实现这一点?抓取遥控器 没有“pullDefault”(或者更恰当地说,fetchDef
* official (this is the official repo, no write permission)
* my_fork (write permission)
我想将我的master
分支的默认遥控器设置为official
(这样我可以轻松跟踪那里的更改),并将my_fork
设置为我创建的任何分支的默认遥控器
如何使用我的.git/config
或git-config
实现这一点?抓取遥控器
没有“pullDefault”(或者更恰当地说,fetchDefault)。这意味着在创建每个分支时,必须单独设置其远程分支。例如,您可以运行:
git checkout -b keep-working-on --track my_fork/existing-branch
(--track
是默认值,我在这里加入它只是为了明确说明),或者:
或:
要创建newbr
并将其上游设置为my_fork/newbr name here
(对于push-u
版本,现在在上游创建newbr name here
,假设它还不存在)
请注意,如果您最终创建了一个带有非-b
-标记的git checkout
的分支,例如在git clone
末尾创建的分支(通常是master
),git:
master
)-如果搜索没有失败,我们毕竟不会创建分支,并且这些都不适用李>
origin/master
,official/master
,my_fork/master
;当然,在一个新的克隆中,只有origin
存在,但git会对每个git签出进行此操作,假设我们甚至完成了步骤1);最后
master
),该名称配置有该远程(origin
)和相应的远程跟踪分支(origin/master
),就像您运行了git checkout-b master--track origin master
)远程。fetchDefault
:如果存在明显正确的远程,则会自动计算正确的默认远程。否则,git希望您使用--set upstream to
或git push-u
方法设置或选择它,如果您无法选择现有分支(例如,创建新分支newbr
)
推送遥控器
但是,根据:
分支..远程
在分支上时,它会告诉git fetch和git push从哪个远程设备获取/推送到哪个远程设备。推送到的远程设备可能会被remote.pushDefault覆盖(对于所有分支)。对于当前分支,要推送到的远程可能会被branch..pushRemote进一步覆盖。如果未配置远程,或者您不在任何分支上,则默认为origin进行获取,remote.pushDefault进行推送。此外,(a句点)是当前本地存储库(点存储库),请参见下面的branch..merge的最后一个注释
分机
在branch上时,它会覆盖branch..remote以进行推送。它也会覆盖remote.pushDefault以从branch上推送。当您从一个位置(例如,您的上游)拉送并推送到另一个位置(例如,您自己的发布存储库)时,您可能希望设置remote.pushDefault为所有分支指定要推送到的远程,并使用此选项覆盖特定分支的远程
这意味着,无论您如何处理fetch remote,您都可以将remote.pushDefault
设置为my_fork
,这将使所有分支默认为push to remotemy_fork
。然后,将branch.master.pushRemote
设置为official
,这样分支master
将推送到office>ial
而不是使用默认的my_fork
remote
git checkout -b newbr
git branch --set-upstream-to my_fork/newbr-name-there
git checkout -b newbr
git push -u my_fork newbr:newbr-name-there