如何在不同的驱动器上设置工作目录和本地存储库?

时间:2015-05-19 11:10:28

标签: git backup

在Git中,如何在不同的驱动器上设置工作目录和本地存储库? 原因是要在每个本地提交上备份代码。

我们在' master'上使用了一个看门人模型。存储库,所以我不能在上游推送任何旧垃圾,但我想确保每次进行本地提交时都备份任何旧垃圾。

1 个答案:

答案 0 :(得分:3)

使用git init' s --separate-git-dir标志

git init命令有一个标志:

  

--separate-git-dir=<git dir>

     

而不是将存储库初始化为目录   $GIT_DIR./.git/,在其中创建包含路径的文本文件   到实际的存储库。此文件充当与文件系统无关的Git   存储库的符号链接。

实施例

对于此示例,我们假设/Volumes/My_USB/是USB驱动器的路径。 (/Volumes特定于Mac OS,但除此路径外,此示例以直接的方式转换为其他操作系统。)

初始化Git存储库

  • 其工作树是当前目录,
  • 其&#34; git目录&#34;是/Volumes/My_USB/projectA_gitdir

只需运行

git init --separate-git-dir="/Volumes/My_USB/projectA_gitdir"

要解决问题,

  • 检查.git 文件的内容

    $ cat .git
    gitdir: /Volumes/My_USB/projectA_gitdir
    

    如您所见,它只是一个文本文件,其中包含您的仓库的git目录的路径。

  • 通过运行

    检查本地仓库的配置
    $ git config --local --list
    

    当没有--separate-git-dir标志初始化回购时,您应该注意到通常不存在的行:

    core.worktree=<pwd> 
    

    其中<pwd>是当前目录的路径。

  • 检查git目录的内容;如果一切顺利,必须在USB驱动器上创建一个名为projectA_gitdir的文件夹,并填充通常进入.git文件夹的所有内容:

    $ ls /Volumes/My_USB/projectA_gitdir
    HEAD        description info        refs
    config      hooks       objects
    

    一切都好:)

当然,如果可以访问该驱动器,您将只能在此存储库上运行Git命令。例如,在卸载它之后,会发生以下情况:

$ git status
fatal: Not a git repository: /Volumes/My_USB/projectA_gitdir