从一个回购& amp; git克隆是否“安全”将原点设为另一个?

时间:2011-11-11 18:05:43

标签: git

所以我倾向于最近有一个我需要处理的回购的克隆"非常接近"网络明智(经常在本地磁盘上)。还有一个"官员"服务器,我的工作流真的想成为原点,但它经常很慢(因为它过载,或者在远程网络上,或两者兼而有之)。

(这个本地仓库是官方服务器的克隆,趋向于一周或两周过时,但是回购非常庞大,并且从旧的VCS引入了大约十年的历史记录,因此本地克隆加了fetch来自遥控器的速度要快得多)

如果我git clone -o local /path/to/repo然后git remote add -f origin URI-for-offical-repo,我最终会得到同样的事情(*)git clone URI-for-offical-repo会给我吗?

我特别警惕任何微妙的差异可能会使我的回购不同。此外,如果我开始使用这种加速克隆的方法,那么" local" repo可能是使用这种方法制作的,可能是多代。

(*)相同的加上额外的远程名称" local",以及任何没有从本地推送到官方服务器的内容。

2 个答案:

答案 0 :(得分:5)

简短的回答:是的,可能。

答案很长:“起源”只是您通常想要推送的地方的别名。只要新目标与您从中提取的存储库(或空存储库)相关,并且您具有对它的写入权限,那么它应该是安全的。

注意:我并没有真正考虑过你的“伪代码”命令示例是明智的。但克隆的概念随后改变了“起源”的网址是一个明智的概念。我已经在服务器地址移动时自己完成了,或者我决定更改我的公共仓库位置等。

请注意,如果新来源不是一个完全空的存储库,或者是本地存储库的旧克隆(没有比本地存储更新的提交),请使用

git push --mirror #e.g. implicitly to "origin"
如果您具有对它的完全写入权限,

可以覆盖并丢弃远程分支。 (这个我设法自己做,当不小心地将.git / config数据从一个repo复制并粘贴到一个无关的repo。[幸运的是它有很多最新的克隆;但我是当删除消息在我的屏幕上滚动时会出汗几秒钟;)])

答案 1 :(得分:3)

你正在做的事情看起来很好,但你可能正在寻找前一段时间添加到git clone的--reference选项。如果存在本地副本,则可以非常快速地使用引用存储库包创建新克隆,然后仅从网络进行更新。例如:git clone --reference ./oldercopy $url newcopy

对于您当前的方案 - 如果树是相关的,则切换URL的URL是没有问题的。如果它们不相关,那么将出现各种令人不快的错误消息。