在开发过程中使用 git rebase 还是 git merge

在开发过程中使用 git rebase 还是 git merge

Git merge 和rebase的目的是一样的,它们都是将多个分支合并成一个。

虽然他们最终的目标是一样的,但这两种方法实现的方式是不同的。那么我们应该用哪个呢?

这里我们有一个示例仓库,它有两个不同的分支:主分支和特性分支。我们想把它们融合在一起。让我们来看看如何使用这些方法来解决这个问题。

(1)使用 Merge

当你运行 git merge 时,你的 HEAD 分支会生成一个新的提交,并保留每个提交历史的祖先。

Fast forward merge是一种不创建提交的合并类型,会更新分支指针到上一次提交。

(2)使用 Rebase

Rebase是将一个分支的修改重写到另一个分支上,而不需要创建新的提交。

你在特性分支上的每一个提交,都会在主分支上创建一个新的提交。这看起来就像这些提交一直是写在主分支之上的一样。

Merge(合并)的优点和缺点

  • 优点
    使用简单,易于理解。
    保持源分支的原始上下文。
    源分支上的提交与其他分支的提交是分开的。
    可以保留提交历史。
  • 缺点

Rebase(变基)的优点和缺点

  • 优点
    代码历史是简化的、线性的、可读的。
    与许多独立的特性分支的提交历史相比,操作单个提交历史更容易。
    干净、清晰的提交信息可以更好地跟踪一个bug或何时引入的某个功能。可以避免众多的单行提交污染历史。
  • 缺点
    会更改历史提交时间,可能会丢失上下文。
    比起Merge,你需要更加小心的使用Rebase。

应该用Merge还是Rebase?

当你的团队对于rebase不熟悉时,那么git merge就是你的正确选择。

Merge允许保存任何给定功能的提交历史,而不必担心覆盖提交和改变历史。

它可以避免不必要的 git revert或reset。

另一方面,如果你更看重干净、线性的代码历史,那么git rebase是最合适的。这种方式可以避免不必要的提交,并保持更集中和线性的变化!

这里要注意的是,如果你不正确地重写了历史,可能会导致严重的问题,所以在使用Rebase时请确保知道你在做什么。

总结:

(1)本地开发分支拉取远程开发分支用rebase,

开发分支合并主干分支的时候用rebase(就是题主说的这些),

最后主干分支合并开发分支用merge,最后推送各分支。

(2)下游合并上游rebase,上游合并下游用merge

(3)简单来说,同分支开发用rebase,特别在git pull时应该--rebase。

不同分支其实merge就好,反正merge操作一般都在gitlab或者研发管理系统内进行。

【参考文章】

【1】你在开发过程中使用Git Rebase还是Git Merge?

https://zhuanlan.zhihu.com/p/260331030

相关推荐
Winston Wood2 小时前
一文了解git TAG
git·版本控制
喵喵先森2 小时前
Git 的基本概念和使用方式
git·源代码管理
xianwu5434 小时前
反向代理模块
linux·开发语言·网络·git
binishuaio6 小时前
Java 第11天 (git版本控制器基础用法)
java·开发语言·git
会发光的猪。7 小时前
如何在vscode中安装git详细新手教程
前端·ide·git·vscode
stewie68 小时前
在IDEA中使用Git
java·git
晓理紫17 小时前
使用git lfs向huggingface提交较大的数据或者权重
git
我不是程序猿儿19 小时前
【GIT】sourceTree的“当前分支“,“合并分支“与“检出分支的区别
git
_OLi_1 天前
IDEA中新建与切换Git分支
java·spring boot·git
PyAIGCMaster1 天前
ubuntu下安装 git 及部署cosyvoice(1)
git