所有的git仓库都会在工作目录下创建.git文件夹,你能改变这个文件夹的位置吗?
4xrmg8kj1#
当你创建仓库时,你可以让Git在其他地方创建.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环境变量;否则你会把事情弄糟的。
git init
--separate-git-dir
git init --separate-git-dir
--git-dir=/path/to/dot-git-directory
GIT_DIR=/path/to/dot-git-directory
$GIT_DIR
u4dcyp6a2#
下面是从给定的.git dir重新建立的技巧。将.git目录移动到你想要的目录。如果你在新目录中输入“git status”,你会看到所有的东西都处于删除状态。诀窍是“git stash”所有删除的东西,同时,所有的东西都会自动重新安装/移出.git目录。所以,新目录是一个全新的git工作仓库。
wr98u20j3#
如果您想手动执行此操作(即不使用git init --separate-git-dir),请遵循此答案。我假设目录D:\projectfolder中有您的文件和一个.git文件夹。您想将该文件夹移动到D:\gitfolder在D:\projectfolder中创建一个名为.git的文件(不是文件夹),内容如下:
D:\projectfolder
D:\gitfolder
gitdir: D:\gitfolder\.git
在文件夹D:\gitfolder\.git中,编辑配置文件,其中[core]下包含以下行:
D:\gitfolder\.git
[core]
worktree = D:\projectfolder
您也可以使用命令git config core.worktree D:\projectfolder执行此操作。
git config core.worktree D:\projectfolder
3条答案
按热度按时间4xrmg8kj1#
当你创建仓库时,你可以让Git在其他地方创建
.git
目录: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
环境变量;否则你会把事情弄糟的。u4dcyp6a2#
下面是从给定的.git dir重新建立的技巧。
将.git目录移动到你想要的目录。如果你在新目录中输入“git status”,你会看到所有的东西都处于删除状态。诀窍是“git stash”所有删除的东西,同时,所有的东西都会自动重新安装/移出.git目录。所以,新目录是一个全新的git工作仓库。
wr98u20j3#
如果您想手动执行此操作(即不使用
git init --separate-git-dir
),请遵循此答案。我假设目录D:\projectfolder
中有您的文件和一个.git文件夹。您想将该文件夹移动到D:\gitfolder
在
D:\projectfolder
中创建一个名为.git
的文件(不是文件夹),内容如下:在文件夹
D:\gitfolder\.git
中,编辑配置文件,其中[core]
下包含以下行:您也可以使用命令
git config core.worktree D:\projectfolder
执行此操作。