我有一个分支,它从一个远程进行拉取并推送到另一个远程,U使用git branch --set-upstream-to=xxxx xxxx
设置拉取回购,使用git config remote.origin.pushurl user@user.com:repo.git
设置推送回购。
尽管拉取来自源repo上的master
分支,但push
会转到目标repo上upstream
分支。
当我切换到分支并执行git push
时,我会得到通常的--global push.default
消息:
warning: push.default is unset; its implicit value has changed in
Git 2.0 from 'matching' to 'simple'. To squelch this message
and maintain the traditional behavior, use:
git config --global push.default matching
To squelch this message and adopt the new behavior now, use:
git config --global push.default simple
When push.default is set to 'matching', git will push local branches
to the remote branches that already exist with the same name.
有没有一种方法可以为特定的分支指定它应该推送到远程的哪个分支,而不是push.default
值,同样也可以为pull指定?
这个想法是推送到任何与分支名称不同的任意命名的分支
只需指定一个上游分支:
git branch --set-upstream-to my_local_branch origin/my_remote_branch
随后的推送将知道将my_local_branch
推送到哪个分支。
您仍然需要设置推送策略(git config push.default simple
)
要推送到一个回购,但从另一个回购中提取,您可以将pushurl设置为不同于pull/fetch url
git config remote.origin.pushurl /url/for/origin/repo
git config remote.origin.url /url/for/upstream/repo
这将允许使用"一个"远程(实际上引用了两个不同的repo)管理所有内容
您还可以更新上游分支部分的refspec:
git config remote.origin.push refs/heads/my_local_branch:refs/heads/my_remote_branch
git config remote.origin.fetch refs/heads/my_local_branch:refs/heads/my_local_branch