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

Git 如何在不同的驱动器上设置工作目录和本地存储库?,git,backup,Git,Backup,在Git中,如何在不同的驱动器上设置工作目录和本地存储库? 原因是要在每次本地提交时备份代码 我们在“主”存储库上使用了一个网关管理员模型,因此我不能将任何旧垃圾推到上游,但我希望确保每次我进行本地提交时都备份任何旧垃圾 使用git init的--单独的git dir标志 该命令有一个标志: --单独的git目录= 而不是将存储库初始化为 $GIT\u DIR或/.GIT/,在那里创建一个包含路径的文本文件 到实际的存储库。此文件充当文件系统无关的Git 指向存储库的符号链接 例子 对于本例,假

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

我们在“主”存储库上使用了一个网关管理员模型,因此我不能将任何旧垃圾推到上游,但我希望确保每次我进行本地提交时都备份任何旧垃圾

使用
git init
--单独的git dir
标志 该命令有一个标志:

--单独的git目录=

而不是将存储库初始化为
$GIT\u DIR
/.GIT/
,在那里创建一个包含路径的文本文件 到实际的存储库。此文件充当文件系统无关的Git 指向存储库的符号链接

例子 对于本例,假设
/Volumes/My_USB/
是指向USB驱动器的路径。(
/Volumes
特定于Mac OS,但是,除了此路径之外,此示例以简单的方式转换为其他操作系统。)

初始化Git存储库

  • 其工作树是当前目录
  • 谁的“git目录”是
    /Volumes/My\u USB/projectA\u gitdir
简单运行

git init --separate-git-dir="/Volumes/My_USB/projectA_gitdir"
为了解决问题

  • 检查
    .git
    文件的内容:

    如您所见,它只是一个文本文件,包含repo的git目录的路径

  • 通过运行

    $ git config --local --list
    
    您应该注意到,在没有
    --单独的git dir
    标志的情况下初始化回购时,通常不会出现一行:

    core.worktree=<pwd> 
    
    一切都好:)

当然,只有在驱动器可访问的情况下,您才能在此repo上运行Git命令。例如,卸载后,会发生以下情况:

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

存储库是否已初始化?或者您将要为另一个项目创建一个新项目?
$ ls /Volumes/My_USB/projectA_gitdir
HEAD        description info        refs
config      hooks       objects
$ git status
fatal: Not a git repository: /Volumes/My_USB/projectA_gitdir