默认情况下合并并推送到2个不同的repos

时间:2012-01-01 18:30:46

标签: git dvcs

假设我的.git/config看起来像这样:

[remote "origin"]
    url = git@github.com:asymmetric/app.git
    fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
    remote = origin
    merge = refs/heads/master
[remote "upstream"]
    url = git@github.com:dhh/app.git
    fetch = +refs/heads/*:refs/remotes/origin/*

现在,当我在master分支上时,git pullgit push都可以使用origin回购。

有没有办法从upstream获取git pull ,但推送origin,所有这些都无需指定repos / branches命令行?

2 个答案:

答案 0 :(得分:2)

您可以拥有一个与其获取网址具有不同推送网址的遥控器。如果你运行

git remote set-url origin git@github.com:dhh/app.git
git remote set-url --push origin git@github.com:asymmetric/app.git

第一个命令设置origin的提取网址,第二个命令设置origin的推送网址。由于默认使用origin,因此您可以获得git pullgit push所需的行为。

答案 1 :(得分:0)

不,这是不可能的。

如果查看配置文件:

[branch "master"]
    remote = origin
    merge = refs/heads/master

您可以将其概括为:

[branch "x"]
    remote = r
    merge = refs/heads/y

这意味着,如果您在分支机构x上并且git push/pull(或从“任何地方”执行git push/pull x),它将作用于远程{{y的分支r 1}}。

你能做的最接近的是别名。