在开发过程中,我经常需要提交并推送"中间"提交,即提交代码不可编译或更改内容等等.我不想做这样的提交,但这是继续我的工作所必需的从办公室到家,有时为其他开发人员提供他们可以开始工作的基础.
我以为我找到了解决这个问题的方法:
我创建一个单独的"dev"分支并进行所有中间提交.
一旦代码处于良好状态,请进行合并以掌握.因此,master不会包含"中间"提交,只会包含"正常"提交.
删除所有中间提交的"dev"分支.
但这不起作用.当我进行合并时,不仅包括合并提交到master,还包括来自"dev"分支的所有"中间"提交.所以删除"dev"分支什么都没有,它的"中间"提交就在那里.
所以问题是:是否有可能以master只包含自己的提交+合并提交的方式进行合并,而不包括第二个分支的提交?如果这是不可能的,你能否告诉我如何实现我的目标 - 能够临时保存中间结果,还能在以后无缝删除它们?
Gar*_*yde 22
当您将"dev"分支合并为master时,请尝试
git checkout master
git merge --squash dev
git commit -m "Add new feature."
Run Code Online (Sandbox Code Playgroud)
该--squash选项会将您的所有中间变更压缩为一个重大变化.
git rebase --interactive如果您需要更多有限控制(例如,重新排序提交和执行多个小南瓜),您也可以使用.这个答案解释了git merge --squash和之间的区别git rebase --interactive.