问题描述
功能请求 (tooBigFeature
) 已演变为 100 个提交、50 个文件的 PR,在审查结束时,工程部门决定需要 10 个 5 个文件的 PR ({{1} },tinyFeatureChunk-01
... 等)——所有这些都来自我们主分支 tinyFeatureChunk-02
上的一个共同的单一提交(当然,它刚刚被拉入 chucknorrisbranch
分支),以便万一紧急情况下它可以回滚较小的 PR。
假设所有更改 tooBigFeature
在功能上都是独立的,并且除了在生产中部分、无错误地降低功能的完整性外,拆分不会导致任何问题。
我该怎么做?有什么工具可以做到这一点吗?
解决方法
这似乎是一项很烦人的任务,但一种方法是
-
git reset chucknorrisbranch
准备好上演您的所有工作 - 重复10次:
git checkout -b tinyFeatureChunk-0<index> chucknorrisbranch
git add <5 files>
git commit -m "Some message"
执行上述操作的快速 Ruby 脚本可能如下所示
`git status --porcelain`.chomp.split("\n").each_slice(5).with_index { |lines,index|
`git checkout -b tinyFeatureChunk-0#{index + 1} chucknorrisbranch`
lines.each { |line| `git add #{line[3..]}` }
`git commit -m "some message"`
}