我创建了一个测试分支。它有很多微小的提交来构建一个功能。
最终,我想把完成的最终更改放到主分支中。
主分支不应该包含测试分支的历史记录。
测试分支最终将被删除。
如何实现这一目标是最好的方式?
生成一个补丁并将其应用于主分支是最好的方式吗?
如果是这样,我该如何生成/应用补丁呢?
"理解Git工作流程"描述了各种方法:
大多数情况下,我的清理只是一个合并。
git checkout master
git merge --squash private_feature_branch
git commit -v
我决定把我的变化分解成更小的变化,所以压缩命令是不够灵活的。(通常我会问自己,“这样的改变是否容易被代码审查通过?”)
git rebase --interactive master
(在你的情况下这不是一个选项,正如你在问题中提到的)
也许我的功能分支已经存在了很长一段时间,而我不得不将几个分支合并到我的功能分支中,以便在工作时保持它的最新状态。历史记录很复杂。
最简单的方法是获取原始差异并创建一个干净的分支。
git checkout master
git checkout -b cleaned_up_branch
git merge --squash private_feature_branch
git reset
git checkout master
git merge --squash testing-branch
--squash
命令会将你的工作状态设置成测试分支上所有更改与主分支合并后的状态,但不会创建任何提交记录。然后,您可以使用git commit
命令,将所有更改一次性提交。