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

时间:2016-08-05 13:26:35

标签: git

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

目标是

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

本练习的目的是将.git放在持久存储(ssd)上,同时保存源/目标代码等的工作目录位于ram磁盘上。我并不特别想将.git放在ramdisk上,因为我不必通过克隆远程仓库来重启每次重启。

理想情况下,我正在寻找一个配置选项,我可以将其编写到每台计算机配置文件中,该文件说"实际上,文件都在那里"。

我可以通过拥有一个本地仓库来解决这个问题,只要我学会了如何配置git repo来进行透明转发,或者通过破解文件系统unionfs样式来缓慢。

git可以将.git元数据放在其他地方吗?

编辑:其中一个答案包括短语" git config core.worktree"。将其输入谷歌会发现我的搜索没有重复,20132009

3 个答案:

答案 0 :(得分:4)

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.

答案 1 :(得分:4)

将你的.git目录移动到你希望的地方-lets说/ 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

答案 2 :(得分:0)

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

但请注意,您无法将.gitignore文件放在那里。它们位于工作目录中,它们包含相对于它们所在目录的路径。(这些路径通常会被检入,并且仍然是存储库的一部分。)如果需要,可以使用$GIT_DIR/info/exclude用于忽略文件的存储库外机制。

相关问题