在开发过程中,我经常需要提交和推送“中间”提交,即提交代码不可编译或正在更改某些内容等。我不想进行此类提交,但这是轻松继续我的工作所必需的从办公室到家里,有时其他开发人员可以为他们提供开始工作的基础。
我以为我已经找到了解决这个问题的方法:
我创建一个单独的“dev”分支并进行所有中间提交。
一旦代码处于良好状态,就进行合并以掌握。因此,主节点不会包含“中间”提交,而仅包含“正常”提交。
删除包含所有中间提交的“dev”分支。
但这行不通。当我进行合并时,不仅合并提交包含在 master 中,而且还包含来自“dev”分支的所有“中间”提交。因此,删除“dev”分支不会产生任何影响,其“中间”提交仍保留在那里。
所以问题是:是否有可能以 master 只包含自己的提交 + 合并提交而不包含第二个分支的提交的方式进行合并?如果不可能,您能否建议我如何实现我的目标 - 能够临时保存中间结果,但以后也能无缝删除它们?
当您将“dev”分支合并到 master 时,请尝试
git checkout master
git merge --squash dev
git commit -m "Add new feature."
The --squash
选项会将所有中间更改压缩为一个重大更改。
您还可以使用git rebase --interactive
如果您需要更多有限的控制(例如,重新排序提交 http://git-scm.com/book/en/Git-Tools-Rewriting-History#Reordering-Commits并做多个小南瓜)。这个答案 https://stackoverflow.com/a/2427520/250168解释了之间的差异git merge --squash
and git rebase --interactive
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)