如何最简单地重新组织一个 Git 代码仓库?

6
我希望重新组织一个Git代码仓库,以管理多个项目。我有一个像下面这样的:
my-org
|--cool-repo
   |--file-one
   |--file-two

我希望你能将它做成这样:

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

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

我不想破坏任何东西。

随着我的团队开始第二、第三个及之后的项目,我想组织“子目录”或“子项目”(我不确定使用哪个术语)来保存与这些附加项目相关的文档。

我应该怎么做,或者在哪里可以最好地恢复调查?

谢谢!


查看代码库,将文件移动到本地检出目录,提交并推送。 - GolezTrol
2
如果您或您的组织对 Git 还不熟悉,我建议不要采用单一仓库(monorepo)的方法。每个独立的应用程序都应该有自己的代码仓库。 - Daniel Mann
与这些添加的项目相关的文档,你需要确保这些“文档”是文本文件。GIT不是文档管理系统,它是用于源代码的。它无法读取文档,它们只会被提交为blob,从而抵消了git带来的任何好处。 - Liam
是的@dagmarPrime,那就是我的意思。我过去曾遇到过人们检入Word文档的问题,每次你以任何方式触摸文档时都会提交,它会完整地添加一个新的Word文档,这是一种在短时间内使GIT存储库膨胀的相当快速的方法。 - Liam
显示剩余2条评论
2个回答

5

欢迎来到Stack Overflow。

如果您的代码已经提交和推送,那么几乎没有什么能让您不安全,所以不必担心犯错误。

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


谢谢,Noufal!还有,感谢友好的小精灵解决了我帖子中的格式问题! - dagmarPrime

2
关于你的情况,有几点需要注意。与 SVN 和其他传统源代码管理系统不同,Git 主要设计为每个仓库托管一个项目。这绝不是一个硬性规定,可以通过多种方式在单个 Git 仓库中托管来自多个项目的源代码。但是,以下两个原因可能会让你考虑使用 Git 的子树或子模块。
1. 因为 Git 是一种分布式源代码管理系统,所以仓库的大小可能会迅速增长。这可能会使克隆仓库变得非常麻烦。
2. 因为 Git 的提交是对整个仓库而不仅仅是子文件夹的提交,所以对于新手来说,将某个分支合并到主分支(或等效分支)可能会变得复杂。并且分支的历史记录可能更具挑战性,难以理解一组提交中真正发生了什么变化。
为了让全栈开发团队能够克隆一个仓库并处理整个解决方案,将所有组件放在单个仓库中可能会很有帮助。在你的情况下,我建议创建一个“主机”仓库,其中包含指向完整解决方案不同组件的 Git 仓库的子树或子模块。这将使开发人员能够进行单个克隆并获取完整的源代码。
如果组件之间紧密耦合且同步频繁更改,请使用子模块。如果组件集成不太频繁或者按照定义的发布计划进行,则请使用子树。

benhorgen,谢谢。到目前为止,我的需求还比较简单,所以根据您的建议,我想我会将项目升级为完整的存储库。 - dagmarPrime

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接