Git更改工作目录

时间:2013-05-28 12:58:22

标签: git

我想使用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返回正确的工作目录....

4 个答案:

答案 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种不同的选择。

  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. 没有远程存储库,您想在远程文件系统上创建一个带有工作树的新存储库。为此,请考虑answer of devconsoleRadon8472
  3. 您已经在远程文件系统上具有现有的存储库和工作空间。在这种情况下,只需将.git目录移动到本地路径,并在工作树中使用以下内容创建一个.git文件:

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

    git clone -b https://your_repo_url
    

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