首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >提取git存储库的一部分?

提取git存储库的一部分?
EN

Stack Overflow用户
提问于 2010-03-29 21:38:17
回答 2查看 10K关注 0票数 32

假设我的git存储库具有以下结构:

代码语言:javascript
运行
复制
/.git
/Project
/Project/SubProject-0
/Project/SubProject-1
/Project/SubProject-2

并且存储库有相当多的提交。现在,其中一个子项目( SubProject-0 )变得非常大,我想将SubProject-0提取出来,并将其设置为独立项目。可以从父git存储库中提取所有涉及SubProject-0的提交历史记录并将其移动到新的git存储库中吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-03-29 21:41:03

请参阅http://git-scm.com/docs/git-filter-branch

我认为你需要像这样的东西

代码语言:javascript
运行
复制
git filter-branch --subdirectory-filter Project/SubProject-0 --prune-empty -- --all

在存储库的克隆中。

票数 37
EN

Stack Overflow用户

发布于 2011-06-28 13:46:58

我需要做一些类似的事情,但我想从本质上将一个子项目从一个repo移到另一个。我所做的是使用fetch,因为它可以从任何来源获取对象。

所以,基本上,我创建了一个新的分支,删除了该分支中不需要的内容,然后使用git fetch将分支从一个存储库拉到另一个存储库。一旦我有了对象,merge就成功了。

例如。

在包含原始内容的存储库上:

代码语言:javascript
运行
复制
    git checkout -b temp master
    git rm -r Unneeded_stuff
    git commit -m 'pruning'

然后,您可以将该分支从一个存储库获取到另一个完全不同的存储库(不相关):

代码语言:javascript
运行
复制
    cd /path/to/other/repository
    git fetch /path/to/source/repo temp:temp

temp:temp的意思是“获取源上的临时文件并将其保存为此处的临时文件”。从那里你可以将结果合并到你的master中。

代码语言:javascript
运行
复制
    git merge temp

然后,您可以删除临时分支,因为在第一种情况下,您不想将其与原始repo合并,而在第二种情况下,您已经合并了它。

我确信这些步骤可以压缩一点,但这个集合看起来很好很清晰。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2538245

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档