如何设置git以跟踪文件夹~/a
中的文件,但将.git
文件夹存储在文件夹~/b
中?
此外,为了更进一步,我可以将.git
文件夹保留在另一台服务器上,并从服务器git
运行a
命令以检查git st
例如,在服务器b
上?
基本上,我希望能够在某个文件夹上使用git而不将.git
目录保存在同一个文件夹中。对于我上面的第二个问题,我想更进一步,甚至不将.git
目录放在同一个服务器上
谢谢!
答案 0 :(得分:7)
设置GIT_DIR
环境变量。
在bash中:
export GIT_DIR=~/b
或者,在PowerShell中:
Set-Item env:GIT_DIR $env:HOME\b
或者,您可以对所有--git-dir
命令使用git
命令行参数:
git --gir-dir=~/b status
请参阅this article about git environment variables
关于将Git存储库目录放在另一台服务器上:好吧,只要您从该服务器挂载文件系统并具有适当的权限,这应该可以正常工作。在本地目录上运行的git命令主要关心访问文件系统,因此它们只要有效就可以工作。
(澄清:上面我假设~/b
是 git目录,如果.git
是~/b
的子目录,则应使用{{ 1}}代替)
答案 1 :(得分:2)
另一种方法:您可以在文件中指定.git
文件夹的实际路径,并将操作重定向到该文件夹。
例如,创建文本文件 A/.git
并填写
gitdir: B/.git # assume B is a non-bare repo
然后你可以在A中有一个工作树,它使用B中的.git
文件夹。
BTW这也是git submodule
的工作原理。