首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Git:在不丢失历史的情况下,从存储库获取一个子文件夹到一个新文件夹。

Git:在不丢失历史的情况下,从存储库获取一个子文件夹到一个新文件夹。
EN

Stack Overflow用户
提问于 2015-02-18 12:15:45
回答 3查看 919关注 0票数 3

我有一个包含多个分支的应用程序的git存储库。源树由几个目录组成。例如:

代码语言:javascript
复制
main_folder
|--> .git
|--> dir0
|--> dir1
|--> dir2

不幸的是,从开发一开始,我就没有使用git-submodulesgit-subtree。现在我想将其中一个目录(例如dir0 )作为一个新的独立应用程序移到一个新的存储库中,当然,如果可能的话,我希望保留相应目录的历史记录和分支。

所以我有两个问题:

  1. 第一个也是显而易见的问题是我怎么能做到这一点?
  2. 同样对于旧的存储库,最佳实践是什么?只需删除文件夹并提交更改,还是其他什么?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-02-26 02:23:56

git splits 使用

它基本上使用相同的git filter-branch方法,但具有更简单的接口。

  1. 安装git splits。我在杰克廷解的基础上作为git扩展创建了它。
  2. 将目录拆分为本地分支#change into your repo's directory cd /path/to/repo #checkout the branch git checkout MyOldBranch #split directory or directories into new branch git splits -b MyNewBranch dir1 dir2 dir2...

如果您想要的只是将目录及其历史复制到新的分支,请在这里停止(您已经完成了)。

如果您希望将新的分支推送到独立的回购协议()

  1. 在某个地方创建一个空回购。我们假设我们已经创建了一个名为new_repo on GitHub的空回购,它有path:git@github.com:simpliwp/new_repo.git
  2. 推动新的回购计划。#add a new remote origin for the empty repo so we can push to the empty repo on GitHub git remote add origin_new_repo git@github.com:simpliwp/new_repo.git #push the branch to the new repo's master branch git push origin_new_repo new_repo:master
  3. 将新创建的远程回购文件克隆到新的本地目录中。 #change current directory out of the old repo cd /path/to/where/you/want/the/new/local/repo #clone the remote repo you just pushed to git clone git@github.com:simpliwp/new_repo.git
票数 2
EN

Stack Overflow用户

发布于 2015-02-23 13:55:56

试试git subtree split。这可以拆分一个子文件夹并保留历史记录。

关于如何使用它,请参考手册页。

票数 3
EN

Stack Overflow用户

发布于 2015-02-25 23:40:32

最后,我使用了git filter-branch方法,Github也提到了这一点。

程序如下。

  1. 将存储库克隆到一个新目录中。
  2. cd到新目录
  3. 假设我们希望创建一个只包含分支dir0的新存储库,相应的git命令应该是: git filter-branch --prune-empty --subdirectory-filter dir0 master
  4. 这将删除所有其他文件和目录,但dir0除外。此外,它将删除与‘dir0 0’无关的提交,这非常方便。
  5. 在原始存储库中,只需删除目录dir0并提交即可。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28583470

复制
相关文章

相似问题

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