你能改变.git文件夹的位置吗?

izkcnapc  于 2023-01-07  发布在  Git
关注(0)|答案(3)|浏览(183)

所有的git仓库都会在工作目录下创建.git文件夹,你能改变这个文件夹的位置吗?

4xrmg8kj

4xrmg8kj1#

当你创建仓库时,你可以让Git在其他地方创建.git目录:

git init --separate-git-dir=/path/to/dot-git-directory .

git init用于创建一个新的本地存储库,但您也可以在现有存储库中运行git init来重新初始化它的一些属性。.git目录的位置就是其中之一。
documentation表示:
在现有仓库中运行git init是安全的,它不会覆盖仓库中已经存在的内容,重新运行git init的主要原因是为了获取新添加的模板(如果给定了--separate-git-dir,则需要将仓库移到另一个地方)。
Git使用作为--separate-git-dir选项参数提供的名称来重命名.git目录,并在工作目录中放置一个名为.git的文件,而不是.git目录。.git文件包含实际.git目录的位置。
如果你想把.git目录放回到工作目录中,你所要做的就是删除.git文件,并把它放回到.git目录中。git init --separate-git-dir显然不能用于此目的。
如果您根本不想在工作目录中包含.git目录或.git文件,则有两种解决方案,但都不方便:
1.将--git-dir=/path/to/dot-git-directory参数传递给allGit命令;
1.设置环境变量GIT_DIR=/path/to/dot-git-directory
第一个选项需要大量输入,Git命令会变得很长,难以阅读。
第二个选项使得使用多个存储库变得困难,每次你想使用不同的存储库时,你必须记住用正确的路径设置$GIT_DIR环境变量;否则你会把事情弄糟的。

u4dcyp6a

u4dcyp6a2#

下面是从给定的.git dir重新建立的技巧。
将.git目录移动到你想要的目录。如果你在新目录中输入“git status”,你会看到所有的东西都处于删除状态。诀窍是“git stash”所有删除的东西,同时,所有的东西都会自动重新安装/移出.git目录。所以,新目录是一个全新的git工作仓库。

wr98u20j

wr98u20j3#

如果您想手动执行此操作(即不使用git init --separate-git-dir),请遵循此答案。我假设目录D:\projectfolder中有您的文件和一个.git文件夹。您想将该文件夹移动到D:\gitfolder
D:\projectfolder中创建一个名为.git文件(不是文件夹),内容如下:

gitdir: D:\gitfolder\.git

在文件夹D:\gitfolder\.git中,编辑配置文件,其中[core]下包含以下行:

worktree = D:\projectfolder

您也可以使用命令git config core.worktree D:\projectfolder执行此操作。

相关问题