我最近发现在命令中设置$GIT_DIR
环境变量或使用--git-dir
标记将允许您指定一个git存储库来运行该命令。这意味着您可以有两个不同的{目录树中的{1}}目录,如果需要,可以将它们重命名为其他目录,并且仍然可以使用您喜欢的任何目录。
一个问题是,您当前所在的目录将被视为您的工作目录。如果要从子目录甚至是工作树中甚至不在的目录中输入git命令,可以指定要与.git
标志或--work-tree
环境变量一起使用的工作目录
这开辟了很多可能性。例如,你可以在你的主目录中为你的dotfiles安装一个git repo,并且在子目录中还有其他git repos用于其他工作。
有没有理由不经常这样做?这是推荐的吗?
答案 0 :(得分:2)
作为chepner answered,它 非常有用,它只是一点点(或很多)痛苦的屁股,正如你自己指出的那样,因为你还必须在各种情况下设置$GIT_WORK_TREE
或使用--work-tree
。您还遇到的问题是,无论工作树如何,每个存储库只有一个临时区域$GIT_DIR/index
。您也可以通过设置$GIT_INDEX_FILE
。
(下一部分的方向与你不同;为了完整性,我将其包括在内。)
在旧版本的Git中,有一个脚本试图让这更容易,在Git 2.5版本中,脚本被(大部分)替换为新命令git worktree
,可以让你添加明确的单独工作-trees(每个意味着位于不同的分支上,并检查以确保它保持这种方式)。 Git知道如何自动处理这些问题,并自动处理--git-dir
,--work-tree
和单独的索引文件,也。但是它有一些错误,正在进行修复;我不建议在至少Git 2.6版本之前使用它,最好是2.9或者现在的最新版本,如果你要大量使用它。
答案 1 :(得分:1)
更改工作目录的功能使得为同一存储库创建多个工作目录变得容易。例如,如果您同时处理两个分支(例如,常规开发分支和错误修复分支),这很有用。
尝试为多个存储库共享同一个工作目录是有问题的,因为两个提交不太可能共享一个工作目录。