我正在将很多项目转移到GitHub中的私有存储库中。其中很多是不再积极使用的项目。因此,我宁愿每个项目都没有专用的存储库 - 我想把它们全部归为一个'Deprecated Projects'存储库。我想这样做,并保持每个项目的历史。
我已尝试将项目目录及其.git目录放入主要的Deprecated Projects存储库中,但这似乎不起作用 - 只有该目录实际上似乎在主存储库中被跟踪/版本化,但没有一个文件。
在这种情况下,我可以选择的最佳选择是什么?我已经尝试将子目录/项目中的.git目录重命名为.git-directory,这似乎消除了问题 - 项目中的所有文件都被正确地添加到主存储库中。如果这确实可以完全按照我的意愿工作,那么这将是一个可接受的解决方案 - 只需要将.git-directory文件夹重命名为.git,如果我确实想要将项目移出'Deprecated Repositories'仓库,并启动积极发展它。如果有人能够确认这种方法是否合适,或者是否可能导致问题,那将非常有用。
我很新,所以有关此的任何信息都将非常感谢!
答案 0 :(得分:2)
使用子树合并。
子树合并允许您保留每个项目的历史记录,最新的提交将每个项目放在一个单独的目录中。如果所有项目都处于非活动状态,这是理想的选择。
您可以正常浏览gitk
中的历史记录,并保留SHA-1哈希值。
假设您拥有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"
换句话说,
请注意,除了“master”之外,这不会保留项目中的分支。您可以通过将它们放在其他子目录中来保留它们,或者您可以跳过read-tree
步骤并仅进行合并提交而不实际从这些分支引入文件。