23

我想使用 Git 存储库,但工作树应该是远程的。例如:如果我的项目~/project存储project.git~/git/project.git.

我通过配置更改了工作树:

worktree=/Users/myuser/project

而且我能够提交和查看差异,但是当我尝试这样做时git stash,我得到了错误:

致命的:没有工作树就不能使用 /usr/libexec/git-core/git-stash。

如何存储.git远离工作树的目录?为什么我会收到这个错误?

git config --get core.worktree返回正确的工作目录....

4

4 回答 4

21

以下似乎可行,请根据您的需要进行调整:

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'

编辑:请注意,您不必--work-tree在 repo 初始化后指定,因为该值存储在git/test/config.

您还可以 cd 进入工作/测试并从那里提交:

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

于 2013-05-28T13:36:57.453 回答
12

更正--git-dir标志使用:

采用:

git --git-dir=git/test/.git ...

代替:

git --git-dir git/test ...
于 2017-07-25T07:09:12.467 回答
1

我看到不同的 4 个选项,具体取决于您的起点。

  1. 你有一个想要在远程文件系统(例如 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 正确创建。之后,您可以像往常一样在远程文件系统中工作,但不会出现远程文件系统上出现的典型性能问题。

  2. 没有远程存储库,您想在远程文件系统上创建一个带有工作树的新存储库。为此,请考虑devconsoleRadon8472的答案。
  3. 您已经在远程文件系统上拥有一个现有的存储库和工作区。在这种情况下,只需将 .git 目录移动到本地路径并.git在工作树中创建一个包含以下内容的文件:

    gitdir: /path/where/you/moved/your/.git
    
  4. 您的远程文件系统上已经有一个工作目录,但尚未附加到远程 Git 存储库。在这种情况下,只需运行

    git clone -b https://your_repo_url
    

    在您的本地文件系统上的某个位置,然后按照选项 3 中所述或Radon8472的答案.git中所述在您的工作目录中创建一个文件。

于 2018-11-09T15:43:40.373 回答
0

您可以在项目文件夹之外使用 .git-dir ,而无需编写每个命令的路径。

.git只需在您的工作目录中创建一个名为的文件并添加如下内容:

gitdir: /path/to/your/dir/storage/dir/project.git

作为路径,您可以使用工作目录顶部的绝对路径和相对路径。

于 2018-08-21T06:28:23.157 回答