首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git:将一些文件的历史记录拆分为单独的分支

git:将一些文件的历史记录拆分为单独的分支
EN

Stack Overflow用户
提问于 2010-11-25 22:44:20
回答 1查看 2.7K关注 0票数 7

假设我在一段时间之前引入了,现在注意到它不应该是我的main分支的一部分,而是分支feature的一部分。是否可以使用git-filter-branch自动将的所有历史记录从我的main分支移到feature分支?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-25 23:16:18

听起来你在做一件相当疯狂的事情!:)

也就是说,我看到了一些选项,但没有一个是特别自动化的。

  1. 如果你有大量的提交文件,只需承认错误,创建一个新的分支,并将具有该功能的进一步提交放入该分支中,直到它们稳定为止。如果你的repo是共享的,这就成了唯一真正的选择。没有人想要有不同的历史,特别是如果那个特性在历史中已经被提交了很深。
  2. 如果你只讨论了10个左右的提交,并且它们是最近提交的,并且没有许多其他提交的交错,你可以在头上签出一个新的分支,并在添加功能之前恢复你不想要这个功能的分支,然后从功能分支中挑选你需要的提交,直到你准备好在以后提交它们。
  3. 如果你正在处理大量的历史,那么很多交错的提交,你真的不想让这个特性出现,你可以写一个小的外壳脚本,它接受git log的输出并把它选到一个新的分支中。大致是这样的:

$ cd git-repo $ git签出功能-x$ -b -shell- git log --pretty=format:"%H" path/to/feature.c

一旦你选择了所有提交的特性分支,你就可以使用git filter-branch过滤掉引用了该文件的所有提交。man page有一个简单的例子就可以做到这一点。

一旦你得到了它,你就可以使用git rebase feature-x --onto <filtered-branch>了,你应该可以开始工作了。

当然,这应该是非常不受鼓励的,特别是如果其中任何一篇发表的话。

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

https://stackoverflow.com/questions/4278264

复制
相关文章

相似问题

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