我想使用Git存储库,但工作树应该是远程的。例如:如果我的项目存储在~/project
内,project.git
存储在~/git/project.git
内。
我通过config更改了工作树:
worktree=/Users/myuser/project
我能够提交并查看差异,但是当我尝试git stash
时,我收到了错误:
致命:如果没有工作树,则无法使用/ usr / libexec / git-core / git-stash。
如何将.git
目录存放在远离工作树的位置?
为什么我收到这个错误?
git config --get core.worktree
返回正确的工作目录....
答案 0 :(得分:13)
以下似乎有效,可根据您的需求进行调整:
mkdir git
mkdir work
git --git-dir git/test --work-tree work/test init
mkdir work/test
echo -n foo > work/test/foo.txt
git --git-dir git/test status
git --git-dir git/test add foo.txt
git --git-dir git/test commit -m 'commit 1'
编辑:请注意,在初始化repo之后,您不必指定--work-tree
,因为该值存储在git/test/config
中。
你也可以从那里进入工作/测试和提交:
cd work/test
echo -n bar > bar.txt
git --git-dir ../../git/test status
git --git-dir ../../git/test add .
git --git-dir ../../git/test commit -m 'commit 2'
然后使用--git-dir
的绝对路径或设置GIT_DIR
。
答案 1 :(得分:5)
--git-dir
标志使用的更正:
使用:
git --git-dir=git/test/.git ...
而不是:
git --git-dir git/test ...
答案 2 :(得分:0)
您可以在项目文件夹之外使用.git-dir,而无需编写每个命令的路径。
只需在工作目录中创建一个名为.git
的文件,并添加如下内容:
gitdir: /path/to/your/dir/storage/dir/project.git
作为路径,您可以在工作目录的顶部使用绝对路径和相对路径。
答案 3 :(得分:0)
根据您的起点,我会看到4种不同的选择。
您有一个要在远程文件系统(例如Samba)中使用的远程存储库(例如,在GitHub上)。在这种情况下,您可以像这样克隆:
git clone --separate-git-dir=/your/local/repository/dir https://your_repo_url /your/remote/workspace/dir
/ your / local / repository / dir和/ your / remote / workspace / dir应该不存在,并且将由Git正确创建。之后,您可以照常在远程文件系统中工作,而不会出现远程文件系统上出现的典型性能问题。
您已经在远程文件系统上具有现有的存储库和工作空间。在这种情况下,只需将.git目录移动到本地路径,并在工作树中使用以下内容创建一个.git
文件:
gitdir: /path/where/you/moved/your/.git
您的远程文件系统上已经有一个工作目录,该工作目录尚未附加到远程Git存储库。在这种情况下,只需运行
git clone -b https://your_repo_url
在本地文件系统上的某个位置,然后按照选项3或Radon8472的答案中的描述,在工作目录中创建.git
文件。