[英]Git merge testing branch (final commit) to master branch
我创建了一个测试分支。 它有很多微小的提交来构建一个功能。 最后,我想进行最后完成的更改,并将它们放入主分支。
主分支,不应包含测试分支的历史记录。
测试分支最终将被删除。
实现这一目标的最佳方法是什么?
生成补丁并将其应用于master是最好的方法吗?
如果是这样,我如何生成/应用补丁?
“ 了解Git工作流程 ”中描述了各种方法:
绝大多数时候,我的清理只是一次壁球合并。
git checkout master
git merge --squash private_feature_branch
git commit -v
我决定将我的改变分解为较小的变化,因此壁球是一种过于钝的乐器。 (根据经验,我问,“这会很容易进行代码审查吗?”)
git rebase --interactive master
(正如您在问题中提到的那样,不是您的选择)
也许我的功能分支存在了很长时间,我必须将几个分支合并到我的功能分支中,以便在我工作时保持最新状态。 历史是错综复杂的。
抓取原始diff创建一个干净的分支是最容易的。
git checkout master
git checkout -b cleaned_up_branch
git merge --squash private_feature_branch
git reset
我现在有一个工作目录充满了我的更改,而且没有上一个分支的行李。 现在我手动添加并提交我的更改。
您正在寻找git merge
--squash
选项:
--squash --no-squash
生成工作树和索引状态,就好像发生了真正的合并(合并信息除外),但实际上没有提交或移动HEAD,也没有记录$ GIT_DIR / MERGE_HEAD导致下一个git commit命令创建合并承诺。 这允许您在当前分支之上创建单个提交,其效果与合并另一个分支(或章鱼的情况下更多)相同。
使用--no-squash执行合并并提交结果。 此选项可用于覆盖--squash。
所以git merge --squash test-branch
并提交。
您也可以尝试git merge --no-commit --no-ff test-branch
git checkout master
git merge --squash testing-branch
--squash
会将您的工作集置于状态,就好像测试分支上的所有更改都与master合并,但不会创建任何提交。 然后,您可以执行git commit
并且所有更改都将在一次提交中进行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.