我在GitHub上有一个仓库,在SourceForge上有一个空仓库。我如何制作镜像并同步它们?如何镜像和同步GitHub和SourceForge存储库?
在StackOverflow中有“Mirroring a repository across Github, Sourceforge and Google Code”,它解释了如何推送到多个存储库,但如何在GitHub或SourceForge中进行提交时如何同步它们?
我在GitHub上有一个仓库,在SourceForge上有一个空仓库。我如何制作镜像并同步它们?如何镜像和同步GitHub和SourceForge存储库?
在StackOverflow中有“Mirroring a repository across Github, Sourceforge and Google Code”,它解释了如何推送到多个存储库,但如何在GitHub或SourceForge中进行提交时如何同步它们?
保留两个单独的远程一个用于谷歌代码,另一个用于github。
git remote add origin <<your google code repo url>>
git remote add github <<your github repo url>>
现在你有两种方法来同步回购。
git remote update
这将从所有远程URL获取,但不会合并。您必须手动合并代码。或者,如果您需要在两个镜像中提交所有提交,则可以通过指定要合并代码的分支名称(可能为主)来分别从中提取它们。
git pull origin master
git pull github master
推到多个分支可以在你的问题中提到的链接或使用单个命令
git push origin master
git push github master
恐怕既不是Github上,也不开源社区提供的镜像功能来完成。乍一看,我可以看到两个选项,但都需要第三台服务器(本地或任何云提供商)。我会把它称为同步服务器。
一种选择是将您的同步服务器设置为从源中拉出并推送到镜像。你可以使用一个简单的crontab。如果你允许在两端写入,你可能会遇到这种方法的问题。
第二个也是更复杂的选项是在同步服务器上创建和设置webhook(github和SF支持)。每次你推动webhook将被调用,你将被允许执行完全相同的推送订单git服务器。这种方法更安全一些,但如果两台服务器同时发生两种不同的推送,仍然可能会失败。这是主 - 主分布式系统中的一个经典问题。
例如,我在SourceForge和GitHub(main)上有项目ScintWrapper,我必须通过git remote add origin https://github.com/borneq/ScintWrapper.git和git remote add sf ssh:// borneq @ git。 code.sf.net/p/scintwrapper/code;主人和出身之间有什么区别? – Borneq
你是对的。如果你从回购中复制你的本地副本(当然你可以改变它,它只是一个标识符),并且master是每个回购的主要(默认)分支,Origin是通过git给予远程的默认名称。如果你只是做一个'git pull'或者'git push'而不指定要从中提取的远程和要合并的分支,它将从'origin'(如果有可用的话)获取并且与'master'合并。 – gnuanu
如果它对你有效,请接受答案。 – gnuanu