`git merge --squash` 究竟是否属于Git合并操作?
Git两种合并方式的差异详解
刚好对这两种Git合并方式熟得很,给你详细拆解下(虽然没法直接放流程图,但文字说明足够清晰):
1. 使用git merge --no-ff target合并
当你在master分支执行这个命令时,Git会生成一个带有两个前驱节点的新合并提交——其中一个前驱是master分支原本的最后一个提交,另一个是target分支的最终提交。
用git log查看提交历史时,你能完整看到两个分支各自的提交记录,分支的分叉、合并痕迹都清晰保留,不会丢失任何分支上的提交细节。
2. 使用git merge --squash + git commit合并
这种方式走的是“压缩合并”的路子:
- 首先
git merge --squash target会把target分支上所有提交的修改内容,打包成一个统一的修改集应用到当前的master分支,但不会自动生成提交。 - 你需要手动执行
git commit来完成最终提交,这个新生成的提交节点只有一个前驱——就是master分支原本的最后一个提交。
用git log查看时,只能看到master分支的历史记录,target分支原来的所有独立提交都被压缩成了这一个新提交,无法看到分支原有的提交细节。
内容的提问来源于stack exchange,提问作者choxsword
相关产品推荐
相关产品推荐

