如何让Git使用相对引用?

时间:2014-08-20 11:16:10

标签: git relative-path relative

我刚刚移动了几个Git存储库,一个是从另一个共享的,只是发现共享存储库已经坏了。但是,他们没有相对移动(两者都在同一目录中),我绝对相信当我设置这个共享关系时,我指定了一个相对路径。

出了什么问题?如何正确配置共享存储库,以便对主存储库的所有引用都是相对的?如何设置存储库,以便可以在不破坏共享存储库的情况下移动其父目录?

1 个答案:

答案 0 :(得分:1)

你所谓的“共享回购”只是在父回购中克隆的嵌套git回购

git clone --shared <repository> [<directory>]

这是你如何“分享”回购。

git clone命令的“--shared”选项只是与源存储库共享对象。
它没有在父仓库和嵌套仓库之间建立任何联系:前者完全忽略了后者。

共享回购(可承受移动)的方法是将嵌套回购声明为:


OP James Haigh的情况下,子模块和子树不是正确的解决方案,因为父repo不需要知道嵌套的repo。

移动“共享”仓库后要修改的文件(意味着使用“--shared”选项克隆的仓库为.git/objects/info/alternates(请参阅“Chapter 6. Tracking Other Repositories”)

然而James Haigh补充道:

  

我需要再增加2个目录,因为Git从[repo]/.git/objects/而不是存储库根本身看到相对的。
  因此,从分段到制作,我需要../../../[project]-production/.git/objects/中的[project]-staging/.git/objects/info/alternatives