目 录CONTENT

文章目录

Git代码合并之Merge、Rebase、Squash的差异

Jinty
2023-12-17 / 0 评论 / 0 点赞 / 16 阅读 / 2417 字

Merge(合并)

操作方式:将一个分支的更改合并到另一个分支,创建一个新的合并提交。

历史记录:保留整个分支的完整历史记录,适用于公共分支。

优点:保留分支的独立性,可读性好,安全。

缺点:历史记录可能变得复杂,有可能会有冗余的合并提交。

相关命令:

git checkout target_branch
git merge source_branch

图例

image-dfvo.png

Rebase(变基)

操作方式:将一个分支的更改移动到另一个分支的末端。

历史记录:不同于merge,rebase会修改历史记录,使得历史记录看起来像一条直线,适用于私有分支或小团队。

优点:历史记录干净,线性,减少不必要的合并提交,适用于已经完工的分支与主干的合并

缺点:可能引起冲突,不推荐对已经分享的分支提交变基。

相关命令:

git checkout source_branch
git rebase target_branch

图例

Squash(压缩)

操作方式:将多个连续的提交合并为一个,创建一个新的提交,是对merge的一种补充。

历史记录:生成一个简化的历史,只包含最终的合并提交,适用于创建一个清晰简单的提交历史。

优点:历史记录干净,提供干净的历史视图,减少rongyu

缺点:丢失了每个提交的详情信息,不适用于公共分支。

相关命令:

git checkout source_branch
git merge --squash target_branch

图例

参考资料

[1] 【IT老齐424】再谈Git代码合并之Merge、Rebase、Squash

[2] Git - git-merge 文档 (git-scm.com)

[3] Git - git-rebase 文档 (git-scm.com)

0
Git

评论区