假设我的git存储库具有以下结构:
/.git
/Project
/Project/SubProject-0
/Project/SubProject-1
/Project/SubProject-2并且存储库有相当多的提交。现在,其中一个子项目( SubProject-0 )变得非常大,我想将SubProject-0提取出来,并将其设置为独立项目。可以从父git存储库中提取所有涉及SubProject-0的提交历史记录并将其移动到新的git存储库中吗?
发布于 2010-03-29 21:41:03
请参阅http://git-scm.com/docs/git-filter-branch
我认为你需要像这样的东西
git filter-branch --subdirectory-filter Project/SubProject-0 --prune-empty -- --all在存储库的克隆中。
发布于 2011-06-28 13:46:58
我需要做一些类似的事情,但我想从本质上将一个子项目从一个repo移到另一个。我所做的是使用fetch,因为它可以从任何来源获取对象。
所以,基本上,我创建了一个新的分支,删除了该分支中不需要的内容,然后使用git fetch将分支从一个存储库拉到另一个存储库。一旦我有了对象,merge就成功了。
例如。
在包含原始内容的存储库上:
git checkout -b temp master
git rm -r Unneeded_stuff
git commit -m 'pruning'然后,您可以将该分支从一个存储库获取到另一个完全不同的存储库(不相关):
cd /path/to/other/repository
git fetch /path/to/source/repo temp:temptemp:temp的意思是“获取源上的临时文件并将其保存为此处的临时文件”。从那里你可以将结果合并到你的master中。
git merge temp然后,您可以删除临时分支,因为在第一种情况下,您不想将其与原始repo合并,而在第二种情况下,您已经合并了它。
我确信这些步骤可以压缩一点,但这个集合看起来很好很清晰。
https://stackoverflow.com/questions/2538245
复制相似问题