首页 > 其他分享 >Merge Or Rebase

Merge Or Rebase

时间:2024-05-05 18:46:35浏览次数:16  
标签:git Rebase feature Merge master 提交 rebase 分支

Merge Or Rebase

都具备分支间变更的能力:但是二者间实现手段大不相同

1. 实现手段

Merge(总是向前推进提交历史,并不会影响提交的原始状态)

我们在特性分支上,执行

# git 会以 我方、对方、以及双方最近公共祖先 对应的快照 ===> 执行三路合并生成新的快照
git merge master


三路合并生成新的快照

并基于此快照,创建一个连接 特性分支 feature 和 主干的合并节点

最后调整特性分支的指向

Rebase(整合变更,对提交历史进行重写)

我们在特性分支上,执行

# 1. git 会从双方最近的公共祖先开始,将特性分支每个提交对应的变更暂存起来,
# 2. 然后以主干分支指向的提交 为新起点,将暂存的变更按顺序,一一 还原成新提交
git rebase master
  1. git 会从双方最近的公共祖先开始,将特性分支每个提交对应的变更暂存起来,
  2. 然后以主干分支指向的提交 为新起点,将暂存的变更按顺序,一一 还原成新提交

    此时,特性分支的新起点,就像是从 C1 迁移到了 C6

2. 异同点

内容完全一致

二者却构建出了迥异的提交的历史

3. 日常开发中经常遇到的例子【开发者从 feature 发起 PR】

由于 master 分支也合入了新的提交,在 PR 中显示,feature 分支和主干间存在冲突而无法合并,此时开发者通常有2 种方式解决冲突问题

将 master 分支 merge 到 feature 分支,并在合并时解决冲突

这样做会在方法方法会在 feature 分支中引入一个合并提交(包含解决冲突所做的修改)

将 feature 分支 rebase 到 master 的最新提交,并在 rebase 过程中解决冲突

4. 交互式 Rebase【提交的重排、压缩、拆分、丢弃】

git rebase -i master

顺序调整

squash 命令(实现对提交的压缩)

drop 指令

5. rebase -i 综合应用

6. 注意点

Git rebase 在重设基线,修整历史的过程中,会产生新的提交替换老提交,谨记:
千万不要使用 rebase 处理已经被其它协作者引用的提交

标签:git,Rebase,feature,Merge,master,提交,rebase,分支
From: https://www.cnblogs.com/aclq/p/18173721

相关文章

  • pd.merge函数合并DataFrame 保留原index
    C=pd.merge(A,B),merge之后C的行数并不会变。但是A的index丢失了,因为merge之后index是重排的。解决办法:方法1:#可以先把A的index保存一下,A、B中含有"col"列A_index=A.indexC=pd.merge(A,B,on="col",how="left")C.index=A_index方法2:#A、B中含有"col"列,set_index设置C......
  • bd-bc-proj-merge-0
    区块链项目构建指南(全)原文:zh.annas-archive.org/md5/e61d4f5cf7a1ecdfea6a6e32a165bf64译者:飞龙协议:CCBY-NC-SA4.0序言区块链是一个去中心化的账本,它维护着一个持续增长的数据记录列表,受到篡改和修订的保护。每个用户都可以连接到网络,向其发送新交易,验证交易,并创建新的区......
  • bc-qk-ref-merge-0
    区块链快速参考(全)原文:zh.annas-archive.org/md5/b5e57485b0609afbfba46ff759c5d264译者:飞龙协议:CCBY-NC-SA4.0前言这是区块链快速参考,一本旨在全方位介绍新手进入区块链世界的书籍。它带你进入令人激动的区块链技术世界,旨在为那些希望完善其对区块链生态系统各支柱的现......
  • bc-etp-merge-0
    面向企业的区块链教程(全)原文:zh.annas-archive.org/md5/71bd99f39f23fd60e3875318ad23711a译者:飞龙协议:CCBY-NC-SA4.0前言区块链正在迅速增长,并改变着商业的运作方式。领先的组织已经在探索区块链的可能性。通过本书,你将学会如何构建端到端的企业级去中心化应用程序(DApps)......
  • bc-dev-hplg-merge-0
    Hyperkedge区块链开发教程(全)原文:zh.annas-archive.org/md5/7f932e9670331dae388d1a76f72881d8译者:飞龙协议:CCBY-NC-SA4.0前言这个学习路径是你探索和构建使用以太坊、HyperledgerFabric和HyperledgerComposer的区块链网络的简易参考。它从区块链的概述开始,向您展示......
  • adv-bc-dev-merge-0
    区块链高级开发教程(全)原文:zh.annas-archive.org/md5/64e2728fdd6fa177d97883a45d7dec42译者:飞龙协议:CCBY-NC-SA4.0前言区块链技术是一种分布式分类账,应用于金融、政府和媒体等行业。本学习路径是您构建使用以太坊、JavaScript和Solidity构建区块链网络的指南。您将首......
  • eth-proj-bg-merge-0
    面向初学者的ETH项目(全)原文:zh.annas-archive.org/md5/5b197ea4ae8836b6854907e58ea8a1dc译者:飞龙协议:CCBY-NC-SA4.0前言本书旨在让你深入了解以太坊区块链世界,并让你使用以太坊制作自己的加密货币。在本书中,你将学习各种概念,并直接应用这些知识,同时还将介绍以太坊区块......
  • C - Merge the balls
    C-Mergetheballshttps://atcoder.jp/contests/abc351/tasks/abc351_c 思路使用stack记录序列路径对栈顶两个元素尝试做缩减处理。 Codehttps://atcoder.jp/contests/abc351/submissions/52873456intn;stack<longlong>sq;intmain(){cin>>n;......
  • git pull如果提示merge冲突,先进行git reset --hard origin/master 后再git pull
    前言全局说明gitpull如果提示merge冲突,先进行gitreset--hardorigin/master后再gitpull一、说明gitreset--hardorigin/mastergitreset--hardorigin/master是一个Git命令,它的作用是将本地的当前分支重置到远程分支origin/master的状态。这个命令会丢失......
  • 30 天精通 RxJS (18):可观察运算符 - switchMap, mergeMap, concatMap
    今天我们要讲三个非常重要的operators,这三个operators在很多的RxJS相关的library的使用示例上都会看到。很多初学者在使用这些library时,看到这三个operators很可能就放弃了,但其实如果有把这个系列的文章完整看过的话,现在应该就能很好接受跟理解。OperatorsconcatMapconcat......