【发布时间】:2016-09-13 21:20:17
【问题描述】:
我有一个包含多个目录和一个文件 MyFile.ext 的 git 存储库。
/
LargeDir1/
LargeDir2/
LargeDir3/
.
.
.
MyFile.ext
我想开始一个只包含MyFile.ext 的新存储库,并保留与之相关的所有历史记录,但忽略其他所有内容(所有LargeDirs)。我该怎么做?
对于目录,我已经成功使用this answer,但是我在单个文件上尝试过,它不起作用。
我也试过this answer,它确实删除了我的文件以外的所有内容,但它似乎也留下了所有的历史记录。
【问题讨论】:
-
看看能不能 'git mv' 把文件放到子目录中,然后使用 'git subtree'。
-
@Gregg 我会尝试一下,但我很确定它不会起作用,因为当您移动文件时,您会丢失 git 历史记录。我之前在重命名目录上使用
git subtree split时遇到过问题。 -
@Gregg 是的,刚刚尝试过。进入新仓库的唯一提交是文件被移动到新目录的提交。
-
我遇到了同样的问题,我尝试了
git subtree split ...和git filter-branch ...两种解决方案都没有成功。这些基本上只适用于其中所有内容从未在该目录之外更改过的子目录。我想要的是你在运行git log MyFile.ext时看到的提交和日志历史记录。 -
@hepcat72 是的,我不知道这是否可能。我最终放弃了,失去了历史。
标签: git