“ 了解Git工作流程 ” 中介绍了各种方法:
在绝大多数情况下,我的清理工作只是壁球合并。
git checkout master
git merge --squash private_feature_branch
git commit -v
Run Code Online (Sandbox Code Playgroud)
我决定将我的更改分解为较小的更改,因此壁球过于钝了。(根据经验,我问:“编写代码审查容易吗?”)
git rebase-交互式主机
(如您在问题中所述,这不是您的选择)
也许我的功能分支存在了很长时间,并且我不得不将多个分支合并到我的功能分支中,以使其在工作时保持最新状态。历史令人费解。
抓住原始差异创建一个干净的分支是最简单的。
git checkout master
git checkout -b cleaned_up_branch
git merge --squash private_feature_branch
git reset
Run Code Online (Sandbox Code Playgroud)
现在,我有了一个包含所有更改的工作目录,而上一个分支没有任何行李。现在,我手动添加并提交更改。
git checkout master
git merge --squash testing-branch
Run Code Online (Sandbox Code Playgroud)
这--squash将使您的工作集处于一种状态,就好像测试分支上的所有更改都已合并到主分支中,但不会创建任何提交。然后您就可以执行此操作git commit,所有更改都将在一次提交中进行。