似乎父级回购中的git repo不包含在父级的提交中,除非它被设置为子模块。是否可以覆盖此行为并将嵌套的git repo视为任何其他目录?我不想通过子模块依赖外部依赖,但想使用git来管理项目中的这些依赖项。
答案 0 :(得分:7)
1 /您可以通过以下方式覆盖:
$GIT_DIR
.git
目录定义为外部 .git
(嵌套式仓库和主仓库外部)core.worktree
设置工作树根目录的路径。这可以被GIT_WORK_TREE
环境变量和--work-tree
命令行选项
在这两种情况下,我们的想法是拥有一个没有任何.git
子目录的嵌套工作树。
2 /对于子模块,嵌套的git repo实际上并不包含在父repo中 在父树中创建special entry以记录外部Git SHA1。
new file mode 160000
index 0000000..4c4c5a2
另见“nature of Git submodules”(答案的第三部分)
答案 1 :(得分:5)
我找到了另一种似乎适合我的方法
如果您git add somefolder/
< - 确保最后有/
,那么它会添加所有文件,而不是像子模块那样对待它。
此处提到了更多内容:http://debuggable.com/posts/git-fake-submodules:4b563ee4-f3cc-4061-967e-0e48cbdd56cb
答案 2 :(得分:2)
另见Are git submodules the only safe way to have working copies within working copies?。
实际上,当我遇到当前的讨论时,我关注的是一个与此处解决的问题不同的问题:使用git作为一种归档工具,可以归档已经有一些git工作目录的文件系统树...也许另一个问题更接近我的问题。
答案 3 :(得分:0)
这不是最优雅的解决方案,但值得一提。
如果您压缩包含存储库的文件夹,则可以将其检入外部存储库。
这可能会有所帮助,因为您将拥有完整的完整状态,包括git reflog
。
答案 4 :(得分:0)
您可以做的最简单(最脏)的事情之一就是重命名.git
文件夹
我有这个文件夹结构:
|- .git
|- folders
|- second-repo
|- .git
|- folders
我只是在根文件夹中使用了此bash命令:
mv /.git /.not_git
现在,您可以进入second-repo
并使用其自己的git来执行命令,这样就可以来回使用这两个git repos。
PS:Git子模块是处理此问题的正确方法,但就我而言,我 无法为他们