将.git移动到与其管理的源不同的目录中

我不问如何移动一个git仓库。 我想将包含在.git中的元数据移到单个机器上的其他位置,而不会影响世界其他地方。

目标是拥有

~/gitmetadata/myproject/.git
~/gitmetadata/myproject/.gitignore
~/somecode/myproject/ # No .git here anymore

这个练习的目的是将.git放在永久存储器(ssd)上,而包含源代码/目标代码等的工作目录位于RAM磁盘上。 我并不特别想将.git放在虚拟磁盘上,因为我宁愿不必通过克隆远程回购来启动每次重新启动。

理想情况下,我正在寻找一个配置选项,我可以将其写入每台机器配置文件中,其中显示“实际上文件在那里”。

如果我学习如何配置git repo来执行透明转发,或者通过破解缓慢的文件系统unionfs风格,我可以通过使用本地回购来解决此问题。

git可以把.git元数据放在别的地方吗?

编辑:其中一个答案包括短语“git config core.worktree”。 在谷歌中输入这个内容会发现我的搜索没有的重复项,2013年,2009年


将您的.git目录移动到您希望的位置--let说,/ tmp / back-up-dir将.git目录替换为包含gitdir路径的.git文件。

例如:

$ cd myProject
$ mv .git /tmp/back-up-dir/.git
$ echo "gitdir: /tmp/back-up-dir/.git" > .git
$ git config core.worktree $PWD

git init:

--separate-git-dir=<git dir>
    Instead of initializing the repository as a directory to either $GIT_DIR
    or ./.git/, create a text file there containing the path to the actual
    repository. This file acts as filesystem-agnostic Git symbolic link to the
    repository.

    If this is reinitialization, the repository will be moved to the specified 
    path.

是的,您可以将.git文件夹移动到永久存储区,然后将$GIT_DIR环境变量设置为指向该位置。

但是,请注意,您不能将.gitignore文件放在那里。 他们生活在工作目录中,并且它们包含与他们所在目录相关的路径(无论如何,这些目录通常会被检入并且是存储库的一部分)。如果你想要,你可以使用$GIT_DIR/info/exclude一个超出存储库的机制来忽略文件。

链接地址: http://www.djcxy.com/p/18889.html

上一篇: Move .git into a different directory than the source it manages

下一篇: Can you change .git folder location