将.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
一个超出存储库的机制来忽略文件。
上一篇: Move .git into a different directory than the source it manages