两个不同的远程回购跟踪两个本地分支

时间:2017-05-27 21:13:38

标签: git version-control

我目前正在开展一个项目,我必须从master分支出来,在本地进行一系列更改,并且“上线”#39;将测试环境推送到特定的远程仓库,如下所示:

git push origin site-testing 

在以下回购中推送到site-testing分支:

user-name@testing.com:/path/to/root-dir-containing-.git

现在我需要从site-testing分支到master分支进行更改。

当我git push origin master时,我希望将这些更改推送到一个完全不同的远程仓库。

所以期望的结果是:

git push origin master 

master推送到以下代表处:

user-name@aws-live-domain.com:/path/to/root-dir-containing-.git
master ..

testing.com

这可能吗?我感谢任何建议

2 个答案:

答案 0 :(得分:3)

您可以添加另一个原点并按下它,如下所示:

git remote add origin1 https://aws-live-domain.com/user-name/<path/to/root-dir-containing->.git
git push origin1 master 

答案 1 :(得分:2)

您可以拥有多个遥控器。这可以让你做你想做的事。

使用git push的一般语法是:

git push remote branch

您经常会看到

,例如git push origin masterorigin部分是远程的名称,第二部分是分支名称(嗯,它实际上更复杂,但是我们只需要在这里使用“分支名称”:-))

请记住,Git中的远程只是其他某个URL上另一个Git存储库的简称。通常,Git存储库附带一个名为origin的远程预制,因为git clone为您设置了一个远程,默认情况下它使用的名称为origin

要添加另一个不同的远程,请运行git remote add,例如:

git remote add xyzzy ssh://user-name@testing.com/path/to/repo.git

现在xyzzy是第二个遥控器的名称,它引用testing.com上的Git存储库,通过ssh user-name@testing.com访问,位于该系统的path/to/repo.git。您现在可以git push xyzzy branch

但等等,还有更多!

每个分支可能有一个(并且只有一个)上游设置。分支的上游实际上是一对项目:它是远程的名称,加上分支名称。这对项目也是你的Git用来记住那个分支的那个分支上一次你的 Git实际转换的那个 与其他Git。

因此,如果您的分支plugh-test通常应该推送到远程xyzzy,您可以这样做:

git branch --set-upstream-to=xyzzy/plugh-test plugh-test

现在你的分支plugh-test会记住它的上游是xyzzy/plugh-test,这是你自己的Git在plugh-test上看到xyzzy的记忆。

如果您的push.default设置为simple(默认情况下为Git 2.0或更高版本),而您 分支plugh-test,则可以刚跑:

git push

因为你的Git会查找你的当前分支的远程,并在推送当前分支时使用它作为默认的远程参数,这是默认的< em> branch 参数。

但请注意,如果您不小心跑了:

git push colossal-cave

认为这将推动分支 colossal-cave,它不会:这里的位置参数始终是远程,而不是分支。

(xyzzy and plugh are magic verbs from Colossal Cave Adventure.)