繁体   English   中英

Git合并测试分支(最终提交)到master分支

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM