我不是在问如何移动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"。将其输入谷歌会发现我的搜索没有重复,2013,2009
答案 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
用于忽略文件的存储库外机制。