说我前一段时间介绍了<feature.c>,现在注意它不应该是我的main分支的一部分而是分支feature.是否可以使用eg git-filter-branch自动将所有<feature.c>的历史记录从我的main分支中移出到feature分支中?
听起来你做的事情相当疯狂!:)
也就是说,我看到了一些选项,其中没有一个是特别自动化的.
如果你有大量的提交存在该文件,只是承认错误,从你的HEAD创建一个新的分支,并进一步提交该分支到该分支,直到它们稳定.如果你是repo的共享,这将成为唯一真正的选择.没有人想要有不同的历史,特别是如果这个特征在历史深处都有.
如果你只是在谈论实际触及该文件的大约10个提交,并且它们最近提交而没有交错的许多其他提交,你可以检查HEAD上的新分支,并恢复你不想要的分支在添加功能之前回到此功能,然后在功能分支中提取您需要的提交,直到您准备好在以后提交它们.
如果你正在处理大量的历史记录,大量的交错提交,而你真的不想让这个功能出现,那么你可以编写一个小的shell脚本来获取它的输出git log并将其选择为新的分支.有点像:
$ cd git-repo
$ git checkout -b feature-x
$ the-perfect-shell-script `git log --pretty=format:"%H" path/to/feature.c`
Run Code Online (Sandbox Code Playgroud)
一旦你拥有了所有提交的功能分支,你就可以git filter-branch用来过滤掉引用该文件的所有提交.该手册页有一个简单的例子,正是这么做的.
一旦你有了,你就可以了git rebase feature-x --onto <filtered-branch>,你应该好好去.
当然,这应该是非常气馁的,特别是如果任何一个发布的话.
| 归档时间: |
|
| 查看次数: |
2556 次 |
| 最近记录: |