繁体   English   中英

Git - 如何最好地在一个主存储库中存储多个存储库?

[英]Git - how best to store multiple repositories inside one master repository?

我正在将许多项目移动到GitHub中的私有存储库中。 其中很多是不再积极使用的项目。 因此,我宁愿每个项目都没有专用的存储库 - 我想把它们全部归为一个'Deprecated Projects'存储库。 我想这样做,并保持每个项目的历史。

我已经尝试将项目目录及其.git目录放入主要的Deprecated Projects存储库中,但这似乎不起作用 - 只有该目录实际上似乎在主存储库中被跟踪/版本化,但没有它的文件。

在这种情况下,我可以选择的最佳选择是什么? 我已经尝试将子目录/项目中的.git目录重命名为.git-directory,这似乎消除了问题 - 项目中的所有文件都被正确地添加到主存储库中。 如果这确实可以完全按照我的意愿工作,那么这将是一个可接受的解决方案 - 只需要将.git-directory文件夹重命名为.git,如果我确实想要将项目移出'Deprecated Repositories'仓库,并开始积极发展它。 如果有人能够确认这种方法是否合适,或者是否可能导致问题,那将非常有用。

我很新,所以有关此的任何信息将不胜感激!

使用子树合并。

摘要

子树合并允许您保留每个项目的历史记录,最新的提交将每个项目放在一个单独的目录中。 如果所有项目都处于非活动状态,这是理想的

您可以像往常一样在gitk历史记录,并保留SHA-1哈希值。

机械学

假设您拥有master-repo repo中的master-repo以及要在项目中合并的project 以下是步骤:

cd master-repo
git remote add project1 ../project1
git fetch project1
git merge -s ours --no-commit project1/master
git read-tree --prefix=project1 -u project1/master
git commit -m "Added project 1"

换一种说法,

  1. 将项目添加为远程项,因此您可以将历史记录添加到主存储库中。
  2. 将项目合并到主存储库中,但使用合并策略完全忽略项目中的文件。 这允许您在不实际更改任何文件的情况下进行合并提交,这允许您稍后浏览历史记录。
  3. 将项目文件放入子目录,然后提交。

请注意,除了“master”之外,这不会保留项目中的分支。 您可以通过将它们放在其他子目录中来保留它们,或者您可以跳过read-tree步骤并只进行合并提交而不实际从这些分支引入文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM