Git推送配置是否允许指定分支?

时间:2015-03-18 01:56:36

标签: git git-push git-pull git-refspec

我有一个从一个遥控器拉出并推到另一个遥控器的分支,U使用git branch --set-upstream-to=xxxx xxxx设置拉回购,git config remote.origin.pushurl user@user.com:repo.git设置推送回购。

虽然拉取来自源仓库中的master分支,但push会转到目标仓库上的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值,同样也可以用于拉取?

1 个答案:

答案 0 :(得分:1)

  

这个想法是推送到任何与分支名称不同的任意命名的分支

只需指定upstream branch

即可
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

这将允许使用“one”遥控器(实际上引用两个不同的repos)管理所有内容

您还可以更新上游分支部分的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