是否有可能在同一个文件夹中有多个本地git存储库?

问题描述:

并感谢您花时间阅读我的文章。是否有可能在同一个文件夹中有多个本地git存储库?

我目前正在使用Unity Engine - 这需要某些文件位于项目目录中的某些文件夹中。例如,假设我有这个假设项目 - LameGame。我的文件夹看起来像这样

./LameGame 
./LameGame/Assets 
./LameGame/Assets/Resources 
./LameGame/Assets/Editor 
./LameGame/Assets/Plugins 
./LameGame/Assets/Scripts 

我保持Unity引擎通过git的几个不同的插件,想知道是否有办法将它们全部导入到同一项目的子模块。我遇到的问题是,他们无法都有一个唯一的电话 - 他们需要在目录之间传播,像这样:

PluginA

/Assets/Resources/PluginA/* 
/Assets/Editor/PluginA/* 
/Assets/Plugins/PluginA/* 

PluginB

/Assets/Resources/PluginB/* 
/Assets/Editor/PluginB/* 
/Assets/Plugins/PluginB/* 

所以最好我正在寻找的是一个解决方案,它允许我的主项目,以及插件都来自资产/文件夹。这可能与Git?

预先感谢您的任何意见/反馈/建议!

(注:我使用的是Windows 7主要与TortoiseGit)

+0

可能重复? http://*.com/questions/436125/two-git-repositories-in-one-directory – 2011-05-17 18:17:44

我宁愿:

+0

msysgit在Windows上符号链接工作得很好吗? – manojlds 2011-05-17 19:03:27

+0

符号链接可能存在一些问题(https://code.google.com/p/msysgit/issues/detail?id=432,http://code.google。com/p/msysgit/issues/detail?id = 520),但没有任何事实上会阻止你使用它们。 – VonC 2011-05-17 19:10:52

+0

啊,这应该是完美的 - 谢谢你! – Kyle 2011-05-17 19:43:29

我认为你正在寻找这样的:http://book.git-scm.com/5_submodules.html

这正好说明了如何设置子模块在Git中,完整的例子

+0

感谢您的快速回复。我遇到的问题是子模块似乎需要他们自己的文件夹(在这种情况下为git/a,git/b,git/c和git/d),但我需要它们共享相同的文件夹(git - 或在我的情况下,资产/)。 我在想这可能是不可能的。 – Kyle 2011-05-17 18:25:14

+1

我指出的页面也解释了你不能用Git子模块做什么。你要找的东西只能用诡计来完成,比如使用符号链接来构建你想要的树... – rlc 2011-05-18 12:55:06

虽然非常过时了,我的意思是非常,理论上你可以有一个git的别名它提供了--git-dir参数来支持远程.git目录的库之一。然后,您可以将第一个回购中的所有文件添加到第二个.gitignore中,反之亦然。然后你可以“git commit”提交到第一个仓库,然后“altgit commit”提交到第二个仓库。

您最好使用符号链接树,正如其他人所建议的,但它在技术上会起作用。

+0

为什么不推荐使用? – einpoklum 2017-04-03 22:27:13

+0

@einpoklum:它违反了[令人惊讶/惊讶的原则](https://en.wikipedia.org/wiki/Principle_of_least_astonishment)。有人不知道你的配置,睡眠不足的人,或者使用find .git或其他东西的自动化工具,可能会对你的目录或回购站做坏事。考虑一下如果这些回购可能通过外部流程更新,意外获取两个git repos试图管理同一个文件的噩梦。拒绝吧。 – 2017-04-04 03:48:03

+0

嘿,这是一个修订控制系统 - 我可以撤销那些不好的事情:-) – einpoklum 2017-04-04 08:46:59