我猜我所问的完全不可能......但值得问一下:)
我有一个存储库,我保存了代码和二进制文件(如PSD)。文件夹结构就像这样(非常简化):
我现在要做的是拆分DESIGNS和CODE ......然后我会将DESIGNS移到Dropbox,而是继续在github上保存CODE。
所以......我的问题是我可以用root用CODE启动一个新的git存储库并保留该文件夹的提交历史记录吗?
注意:我想要摆脱DESIGNS文件夹的原因之一是我需要节省空间:) DESIGNS在此期间变得非常大......我宁愿不升级我的Github付费计划因为那个
谢谢!
答案 0 :(得分:1)
git filter-branch可以保留历史记录并放弃其他所有内容。
$ git filter-branch --subdirectory-filter CODE
要注意这是破坏性的。稍后您可能想要这样做:
$ git reflog expire --expire=now
$ git gc --prune=now
您将看到存储库大小的显着减少,仅具有CODE的历史记录并删除所有这些无法访问的对象。
答案 1 :(得分:0)
为什么不提交删除DESIGNS
的更改并将CODE
移至顶级?这样就可以完全准确地保存历史记录。
E.g。 (来自GIT-PROJECT
)
git rm -r DESIGNS # assumes you've saved DESIGNS somewhere
git mv 'CODE/*' .
git commit -m "Removed DESIGNS, moved code to the top level"
如果您确实要从存储库的历史记录中删除DESIGNS
并假装代码始终位于顶层,则可以git filter-branch
使用--tree-filter
或{{1重写历史,虽然这是一个更复杂的变化。