如何最简单地重组git存储库?

时间:2019-03-18 16:48:46

标签: git

我想重新组织一个git repo来管理多个项目。 我有一个

my-org
|--cool-repo
   |--file-one
   |--file-two

我想做到

my-org
|--cool-repo
   |--project-one
      |--file-one
      |--file-two
   |--project-two

我已经阅读了一些git文档,但是我不确定应该学习哪些命令。我不需要合并代码,也不需要删除任何内容。

我不想破坏任何东西。

当我的团队开始第二,第三和以后的项目时,我想组织“子目录”或“子项目”(我不确定使用的术语)来保存与这些新增项目相关的文档。

我该怎么办,或者最好在哪里恢复调查?

谢谢!

2 个答案:

答案 0 :(得分:2)

欢迎堆栈溢出。

如果您的代码已提交并推送,几乎没有什么是您不能安全地执行的,因此不必担心会犯错误。

话虽如此,在您的特定情况下,您不需要做很多事情。只需使用project-one创建新目录mkdir project-one。使用file-onefile-twogit mv file-one file-two project-one移动到其中,然后使用git commit提交新更改(git mv命令将自动进行重命名)。

答案 1 :(得分:2)

关于您的情况的几点说明。与SVN和其他传统的源代码管理系统不同,Git的主要目的是为每个存储库托管 1个项目。这绝不是硬性规定,有多种方法可以在单个Git存储库中托管多个项目中的源代码。但是,有两个考虑使用Git subtreesubmodule的原因。

1。)由于Git是分布式源代码管理管理系统,因此存储库的大小可以更快地增长。这会使克隆回购成为一个大麻烦。

2。)由于Git commit是对整个存储库的提交,而不仅仅是子文件夹,因此merge(或等效)分支中的master可能变得复杂新手。要了解一组提交中的实际更改,分支机构的history可能更具挑战性。

将一个完整的开发团队提供给一个单独的repo进行克隆以工作整个解决方案可能会有所帮助。对于您的情况,我可能会考虑一个包含Git存储库的{host {1}}或subtrees的“主机”存储库,其中包含全栈解决方案的不同组件。这样一来,开发人员就可以进行单个克隆并仍然获得完整的源代码。

如果组件紧密耦合并且经常同步更改,我建议使用submodules。使用submodule可以减少组件的集成频率和/或按已定义的发布时间表进行集成。