Git克隆多个分支到同一个本地目录可能吗?

时间:2015-03-03 03:14:40

标签: git

我们有2个单独的repos,但它们需要在同一个本地目录中才能正确编译我们的代码。

一个git可以单独克隆到同一个本地目录而没有任何副作用吗?

git clone a@b.d.com:app/z.git -b b1 local_dir
git clone a@b.d.com:app/y.git -b b1 local_dir

谢谢。

3 个答案:

答案 0 :(得分:2)

不,您不能在同一目录中存在两个Git存储库。

这样做的一个原因是每个Git仓库里面都有一个.git子目录。如果一个目录中有两个存储库,则它们的.git子目录将发生冲突。

另一个原因是,如果两个回购包含同一相对位置的文件,则不清楚会发生什么。

您可以在其他Git回购中使用Git回购(请参阅git help submodule),但这并不是您正在寻找的内容。

您应该为更高级别的问题寻找替代解决方案,以便正确编译代码。"但是如果你真的陷入困境并且想出更简单的想法,你可以考虑制作一个符号链接目录,指向两个单独的Git回购中的所需文件。该链接目录甚至可以作为第三个回购或在现有的两个回购中签入。

答案 1 :(得分:1)

您可以通过this answer中所述指定git-dirworking-tree来执行此操作。您的存储库将存在于不同的目录中,但共享工作文件夹,允许您混合文件进行编译。

但是,您可能只能执行一次,然后基本上无法以有意义的方式执行任何其他git操作。每个repo应该将其他repo的文件视为未跟踪,因此您的工作目录将始终是脏的。您仍然可以提交,但任何提取都需要您存储和解除所有未跟踪的文件。如果它有效,那将是一个巨大的痛苦。

就个人而言,如果这确实是如何编制项目的话,我建议对设置项目的人进行打击。

答案 2 :(得分:1)

克隆git仓库后,您将可以使用git worktree add <path> [<branch>]签署不同路径中的多个分支,并附带Git 2.5 +(2015年7月)。

用一个更强大的机制替换旧脚本contrib/workdir/git-new-workdir,其中&#34;链接&#34;工作树实际上记录在主repo新$GIT_DIR/worktrees文件夹中(以便在任何操作系统上工作,包括Windows)。

同样,一旦您克隆了一个仓库(在/path/to/myrepo之类的文件夹中),您就可以在不同的独立路径中检出不同的分支(/path/to/br1,{{1} }),将那些工作树链接到主要仓库历史记录(不再需要使用/path/to/br2选项)

详情请见&#34; Multiple working directories with Git? &#34;