Git 保持2个远程存储库始终同步

Git 保持2个远程存储库始终同步,git,github,Git,Github,我在github中有一个组织帐户,其中有一个名为a的存储库。 由于github为用户提供了糟糕的ACL,我希望另一个名为B的存储库与存储库A同步 存储库B还必须: 使所有分支与A同步 拥有所有的提交历史记录 基本上,存储库B必须是a的备份 我需要这个,因为我需要在存储库B上设置不同的ACL 实现这一目标的最佳方式是什么 更新: 我试过这个: git clone B git remote add upstream A git fetch upstream git merge upstream/

我在github中有一个组织帐户,其中有一个名为a的存储库。 由于github为用户提供了糟糕的ACL,我希望另一个名为B的存储库与存储库A同步

存储库B还必须:

  • 使所有分支与A同步
  • 拥有所有的提交历史记录
基本上,存储库B必须是a的备份

我需要这个,因为我需要在存储库B上设置不同的ACL

实现这一目标的最佳方式是什么

更新: 我试过这个:

git clone B
git remote add upstream A
git fetch upstream
git merge upstream/master
git push origin master
这实际上是可行的:B中的主库与A中的主库是同步的,但我不知道如何使用A中的分支来实现这一点。

因为你说“存储库B必须是A的备份”,我假设B是只读的。如果是这样的话,您可能需要使用“镜像”来实现这一点。即,按如下方式设置您的B回购:

git clone --mirror A
然后

git remote update 
每当你需要更新B

不过有几个注意事项:

  • 执行更新时,对B的提交(如果有)将丢失
  • 正如KDE项目最近告诉我们的那样,镜子是。因此,如果A以某种方式变得腐败,那么B也可能反映腐败。。。出于备份目的,您可能需要查看此问题的答案:

通过
push
ing和
pull
ing。我已经更新了问题,以澄清我的问题。对不起,您能更清楚地说明我需要使用哪些git命令吗?运行
git clone--mirror之后,我没有得到一个工作副本。相反,它下载一个名为a.git的文件夹。如何添加B作为遥控器?并使用
git remote update?
在服务器上为镜像存储库执行这两个命令。第一种方法创建一个裸镜像回购。它“知道”它是一面镜子,知道原作的位置。第二个命令更新裸镜像repo。要获得工作副本,必须以克隆原始repo的相同方式克隆镜像的B repo。关于“2个远程存储库”的问题——这里的假设是您不能仅在服务器上运行命令(在本例中为github)