当前位置: 首页 > news >正文

git merge 和 git rebase

git mergegit rebase 都是 Git 版本控制系统中用于整合不同分支的变更的方法,但它们在处理变更的方式上有所不同。

git merge
当你使用 git merge 命令时,Git 会将两个分支的变更合并到一起。这通常意味着在当前分支上创建一个新的“合并提交”(merge commit),这个提交会将两个分支的历史连接起来。这种方式保留了两个分支各自的历史和变更顺序。

例子
假设你有一个名为 main 的分支,你从这个分支创建并切换到了一个名为 feature 的新分支来开发一个新功能。在 feature 分支上,你提交了三个变更(commit A、B、C)。与此同时,main 分支也有了更新(commit D)。现在,你想要将 feature 分支的变更合并回 main 分支。

main:   D|
A---B---C feature

如果你在 main 分支上执行 git merge feature,Git 会创建一个新的合并提交(E),将 feature 分支的变更合并到 main 分支。

main:   D---E|   /
A---B---C feature

git rebase
git rebase 命令会将一系列提交从一个分支上摘下来,然后重新应用(“replay”)到另一个分支上。这通常用于将一个分支上的变更“移植”到另一个分支的最新提交上,从而创建一个更干净、更线性的历史。

例子
使用相同的场景,如果你在 feature 分支上执行 git rebase main,Git 会将 feature 分支的提交(A、B、C)重新应用到 main 分支的最新提交(D)上。

main:   D|
A'---B'---C' feature

这里的 A’、B’、C’ 是 A、B、C 提交的“新版本”,它们是在 main 分支的 D 提交之后重新应用的。这样,feature 分支的历史就“重写”了,没有了合并提交。

总结

  • 使用 git merge 时,变更是“合并”在一起的,会创建一个新的合并提交。
  • 使用 git rebase 时,变更是“移植”到另一个分支上的,会创建新的提交,但不会创建合并提交。

注意git rebase 会重写历史,这在个人项目中通常没问题,但在公共分支上使用时可能会引起问题,因为它会影响其他协作者的历史。


http://www.mrgr.cn/news/40935.html

相关文章:

  • 极端天气道路目标检测数据集 3400张 带标注 VOC YOLO 6类
  • 苹果荔枝柠檬梨柿子数据集 水果数据集 树上1500张 带标注 voc yolo 5类
  • 玉米叶片病害检测数据集 6000张 玉米 带标注 voc yolo 6类
  • C语言_内存函数
  • Java | Leetcode Java题解之第450题删除二叉搜索树中的节点
  • 智能平衡移动机器人-平台硬件电路
  • 【Linux 24】网络基础概念
  • SolidWorks机器转ROS2 URDF
  • Oracle exadata存储节点更换内存操作及报错处理
  • MySQL--数据库约束(详解)
  • C语言 | Leetcode C语言题解之题451题根据字符出现频率排序
  • 可视化图表与源代码显示配置项及页面的动态调整功能分析
  • C++ | Leetcode C++题解之第451题根据字符出现频率排序
  • Linux 实用工具Axel安装及使用教程(支持多线程下载)
  • SD-WebUI forge支持flux模型。算力互联forge镜像使用教程
  • Unity Input System自动生成配置
  • AccessoriesqueryController
  • Difference of Convex Relaxation (DC)
  • 基于深度学习的任务序列中的快速适应
  • Hive数仓操作(十)