2017-10-05 115 views
0

每个项目有两个远程存储库:一个位于本地NAS上,另一个位于GitHub上。我觉得我的项目存储在两个不同的位置比较安全。只要我按下,Visual Studio中就可以很好地工作了:Git:为两个远程存储库创建新分支

我只是创建两个远程存储库,提交本地更改,然后推送到每个远程存储库。

但它是如何工作的另一种方式?我需要能够创建分支,与他们一起工作,同时承诺重新购买和合并。 如何在两个远程存储库中创建同一个新分支?

回答

1

如何在两个远程存储库中创建相同的新分支?

Git是,在某些方面,那种傲慢约分支。 Git真正在意的是承诺。当你运行git push时,你有你的Git在互联网电话上调用另一个Git;你的Git交给那个Git任何你有的新提交,他们没有。

为了他们 GIT中记得这些提交的名字,你的Git也给出了自己的Git的一些名字 - 更新:“请把这个分支名记住这个具体承诺。”在这里,Git的devil-may-care attitude有一个关于分支名称的例外:当他们的Git收到git push,,如果名字已经存在,Git“希望”推动对名称做一个快进操作,基于新的提交进来。

如果名称不存在存在,他们的Git只是设置名称,现在名称存在。所以创建该分支是微不足道的:只是git push(也许与-u以及如果这是第一次推到你的默认远程,通常被称为origin)。接收的Git没有这个名字的分支,只会创建你要求他们创建的名字。

要重复推送到两个不同的“其他Git”,您可能想要制作两个不同的遥控器(好吧,听起来像您已经这样做了)。这些遥控器中只有一个可以在您自己的存储库中作为分支的(单个)上游,但您可以随时在git push remote1 branch:branchgit push remote2 branch:branch之间。接收Git会在冒号后面创建或更新名称的分支,或者可能拒绝更新,因为它不是快进操作。

如果其他的Git拒绝推送,可以设置强制标志,然后再试一次:这使得您的请求,“请设置您的命名branch提交1234567...分支”,变成了命令,没有礼貌的“请”面前。他们仍然可以拒绝,但默认情况下,大多数接受Gits会服从。 (GitHub拥有基于网页的控制旋钮,用于设置是否遵守这些命令,在您的NAS上,您可以使用ssh和创建并管理钩子来执行同一种控制。)

+0

Thanks a很多详细的答案!我会放弃并提供反馈。 – Chris