说我有两个遥控器:
* official (this is the official repo, no write permission)
* my_fork (write permission)
我想将master
分支的默认远程设置为official
(以便我可以轻松跟踪其中的更改),并将my_fork
设置为默认远程我创建的任何分支。
如何使用.git/config
或git config
?
答案 0 :(得分:2)
没有“pullDefault”(或者更确切地说,fetchDefault)。这意味着当您创建每个分支时,您必须单独设置其远程。例如,您可以运行:
git checkout -b keep-working-on --track my_fork/existing-branch
(--track
是默认值,我将其包含在此处仅用于说明),或者:
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
创建newbr
并将其上游设置为my_fork/newbr-name-there
(对于push -u
版本,现在在上游创建newbr-name-there
,假设它尚不存在)
请注意,如果您最终创建一个非-b
- 标记为git checkout
的分支,例如对于分支(通常为master
)创建的分支始终为true在git clone
末尾,git:
master
) - 如果搜索没有失败,我们就不会创建一个分支。这都不适用; origin/master
,official/master
,my_fork/master
;当然,一个新的克隆,只有origin
存在,但git为每个 git checkout
执行此操作,假设我们甚至完成了步骤1);最后master
)配置的名称(origin
)和相应的远程跟踪分支(origin/master
),就好像您已经运行git checkout -b master --track origin/master
。这就是没有remote.fetchDefault
的原因:如果有明显正确的遥控器,则自动计算正确的默认遥控器。否则git希望您使用--set-upstream-to
或git push -u
方法设置或选择它,如果您无法选择现有分支(例如,创建新分支newbr
)。
但是,按the git config
documentation:
分支<名称>。远程
当在分支< name>上时,它会告诉git fetch和git push从哪个远程提取/推送到。可以使用remote.pushDefault(对于所有分支)覆盖要推送到的远程。对于当前分支,可以进一步覆盖推送到当前分支的远程。< name> .pushRemote。如果没有配置远程,或者您不在任何分支上,则默认为origin用于获取,而remote.pushDefault用于推送。另外,。 (一个句点)是当前的本地存储库(点存储库),请参阅branch。< name> .merge的最后一个注释。
分支<名称> .pushRemote
当在分支< name>上时,它会覆盖branch。< name> .remote for pushing。它还会覆盖remote.pushDefault以从分支< name>推送。当您从一个地方(例如您的上游)拉出并推送到另一个地方(例如您自己的发布存储库)时,您可能希望设置remote.pushDefault以指定要推送到所有分支的远程,并使用此选项覆盖它对于特定的分支。
这意味着无论您如何处理提取遥控器,都可以将remote.pushDefault
设置为my_fork
,这将使所有分支默认为推送到远程my_fork
。然后,将branch.master.pushRemote
设置为official
,以便分支master
将推送到official
,而不是使用默认的my_fork
遥控器。