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

【Git】在更新项目时“将传入更改合并到当前分支“和”在传入更改上变基当前分支“有什么区别

1. 将传入更改合并到当前分支(Merge)

  • 本质上是执行:

    git pull --merge
    
  • 过程:

    • Git 会把远程分支的最新提交合并到你的当前分支。
    • 如果本地有新的提交,合并会产生一个新的 合并提交(merge commit),历史会呈现分叉和合并的图形。
  • 特点:

    • 保留完整历史,清晰展现“谁在什么时候分支、什么时候合并”。
    • 历史可能比较“乱”,尤其是多人协作时,日志里会有很多 merge commit。

2. 在传入更改上变基当前分支(Rebase)

  • 本质上是执行:

    git pull --rebase
    
  • 过程:

    • Git 会先把你本地分支的提交“拿下来”,让当前分支回到远程分支的最新状态,再把你本地的提交“重新应用”到这之上。
    • 结果就是历史看起来像是你在远程分支的最新提交之后再提交了你的更改。
  • 特点:

    • 历史干净,线性,没有额外的 merge commit。
    • 但是提交的哈希值会变化(因为是“重新应用”),如果这些提交已经推送过远程,rebase 后需要 --force 推送,容易出问题。

举个例子

远程分支历史:

A---B---C   (origin/main)

本地你有新提交:

A---B---D   (main)

如果选择 合并(merge)

A---B---C\   \D---M   (main)

M 是新产生的合并提交。

如果选择 变基(rebase)

A---B---C---D'   (main)

看起来就像 D 是在 C 之后产生的。

http://www.zskr.cn/news/626.html

相关文章:

  • 并不是真的路过而已 / 也不是真的不会想你 - Urd
  • CF1644题解
  • 花椒直播首次开源推流器组件 为鸿蒙开发者提供高性能推流解决方案
  • winform定时任务
  • 基于Python+Vue开发的旅游景区管理系统源码+运行
  • 剑指offer
  • nvm安装与配置
  • Exadata计算节点的内存出现故障,导致CPU耗尽
  • 磁盘控制器与磁盘驱动器的关系
  • 【GitHub每日速递】从编程小白到造轮子高手,免费资源 + 实战指南全给你
  • CF1725D Deducing Sortability
  • 集合框架2
  • [机器人] 产业研究之【人形机器人】
  • 因果图灵测试(Causal Turing Test, CTT),为判断AGI是否真正实现的唯一终极标准。
  • 1111
  • Codeforces Round 1048 (Div. 2)
  • 世界最顶级的游戏网络联机框架——NetCode for Entity
  • 理解Redis线程模型
  • Prometheus监控harbor仓库
  • kubernetes集群重置部署(四)
  • 第一次作业
  • windows将服务器文件夹映射到windows本地
  • [huggingface] huggingface 有和 `git clone` 一样方便的命令
  • 计数杂题选刷 Part II
  • Rust异步运行时最小实现 - extreme 分享
  • MIDI简谱编辑器1.1程序代码QZQ-2025-8-20
  • p型编码
  • OTA 升级问题的分析
  • P3195 [HNOI2008] 玩具装箱
  • 模拟题