【问题标题】:Split file into separate repository, preserving history将文件拆分为单独的存储库,保留历史记录
【发布时间】:2017-08-17 15:42:58
【问题描述】:

我只想对单个文件而不是目录执行 git-subtree split 的等效操作。也就是说,我想创建一个只包含该文件及其所有历史记录的新存储库。

将文件名传递给--prefix 参数不起作用

git subtree split --prefix=file_name -b split

我尝试了git-filter-branch 的几个变体,但没有找到正确的咒语。

【问题讨论】:

  • See this related (but not quite the same) question。要实现您想要的,您必须复制您希望复制的提交,而不是其他任何提交。您可以使用git filter-branch 执行此操作,它只是缓慢而痛苦。您可以通过其他更快的方式进行操作;不过,除非你写出像git subtree 这样的脚本,否则它仍然会很痛苦。
  • 这是一个适用于一个或多个文件的解决方案:stackoverflow.com/a/6006679/1072626

标签: git git-subtree git-filter-branch


【解决方案1】:

您可以使用 filter-branchtree-filter 删除除您想要保留的文件之外的所有内容

git filter-branch --tree-filter 'find -type f -not -path ./foo/bar -delete' --prune-empty

【讨论】:

  • 请注意,在文件路径的开头包含./ 非常重要。
  • 然后我使用this invocation of filter-branch 删除根提交。在我的情况下,我想要的文件不在根提交中,但提交被保留为空提交。
猜你喜欢
  • 2011-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-17
  • 2014-03-24
  • 1970-01-01
相关资源
最近更新 更多