我们有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
谢谢。
答案 0 :(得分:2)
不,您不能在同一目录中存在两个Git存储库。
这样做的一个原因是每个Git仓库里面都有一个.git
子目录。如果一个目录中有两个存储库,则它们的.git
子目录将发生冲突。
另一个原因是,如果两个回购包含同一相对位置的文件,则不清楚会发生什么。
您可以在其他Git回购中使用Git回购(请参阅git help submodule
),但这并不是您正在寻找的内容。
您应该为更高级别的问题寻找替代解决方案,以便正确编译代码。"但是如果你真的陷入困境并且想出更简单的想法,你可以考虑制作一个符号链接目录,指向两个单独的Git回购中的所需文件。该链接目录甚至可以作为第三个回购或在现有的两个回购中签入。
答案 1 :(得分:1)
您可以通过this answer中所述指定git-dir
或working-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;