如何从现有git存储库中的文件夹创建新的git存储库?

如何从现有git存储库中的文件夹创建新的git存储库?,git,version-control,Git,Version Control,我想在现有git存储库下创建一个文件夹的新git存储库。我希望历史记录保存在新的存储库中。如何创建这个新的git存储库?您可以克隆它并保留所需的文件;然后将保留历史记录。您可以对其进行克隆,然后在克隆上应用一个筛选器分支,以便拆分该存储库,只提取所需的目录(及其完整历史记录) 看 请注意,git克隆--克隆步骤中未使用硬链接/XYZ/ABC: --no hardlinks开关使git在克隆本地存储库时使用真实的文件副本而不是硬链接 假设您只想将子目录作为一个单独的项目保留:您可以使用git fi

我想在现有git存储库下创建一个文件夹的新git存储库。我希望历史记录保存在新的存储库中。如何创建这个新的git存储库?

您可以克隆它并保留所需的文件;然后将保留历史记录。

您可以对其进行克隆,然后在克隆上应用一个筛选器分支,以便拆分该存储库,只提取所需的目录(及其完整历史记录)

请注意,
git克隆--克隆步骤中未使用硬链接/XYZ/ABC

--no hardlinks
开关使git在克隆本地存储库时使用真实的文件副本而不是硬链接


假设您只想将子目录作为一个单独的项目保留:您可以使用
git filter branch

  • 创建一个新分支
  • 定义一个“树过滤器”,以您想要的方式重新排列签出副本,最好是作为一个单独的脚本
  • 运行git筛选器分支--树筛选器=/path/to/script thebranch
  • 现在您有了一个单独的分支,它与正常的开发流无关,只包含子目录。克隆新分支的人只会获得子项目历史记录。

    您不需要在此处定义(自定义)树过滤器。内置子目录过滤器正是这样做的,如中链接的答案所述。您也不希望在同一回购协议中的新分支上执行此操作,而是在单独的克隆中执行此操作。如果repo在不同的分支上同时包含子目录和完整项目,则初始克隆将获取这两个分支,并为每个分支创建远程跟踪分支。浪费的