稀土掘金 稀土掘金

git merge rebase cherry-pick分别什么时候用?一文解惑

一、git merge

1.使用

  • 将分支切换到 master 上去:git checkout master
  • 将分支 feature 合并到当前分支(即 master 分支)上:git merge feature

2.特点

  • 只处理一次冲突
  • 引入了一次合并的历史记录,合并后的所有 commit 会按照提交时间从旧到新排列
  • 所有的过程信息更多,可能会提高之后查找问题的难度

二、git rebase

1.使用

与 git merge 一致,git rebase 的目的也是将一个分支的更改并入到另外一个分支中去。

  • 执行 git rebase master 的操作,意味着让当前分支 feature 相对于 分支 master 进行变基
  • 遇到冲突,进行对比的双方分别是 master 分支的最新内容和 feature 分支的第一次提交的内容。
  • 在我们解决了冲突之后,需要执行 git rebase --continue 来继续变基的操作。
  • 执行之后又遇到了冲突,这次是与 feature 分支的第二次提交进行对比出现的冲突,意味着我们需要多次解决同一个地方的冲突。

2.特点

  • 改变当前分支从 master 上拉出分支的位置
  • 没有多余的合并历史的记录,且合并后的 commit 顺序不一定按照 commit 的提交时间排列
  • 可能会多次解决同一个地方的冲突(有 squash 来解决)
  • 更清爽一些,master 分支上每个 commit 点都是相对独立完整的功能单元

3.交互模式

git rebase -i HEAD~4

指定了对当前分支的最近四次提交进行操作。


中间红框内有一些命令,可以用来处理某次提交的,可以使用 squash 来将所有的 commit 合并成一次提交,编辑并保存之后会出现编辑提交的信息的提示,编辑提交即可。

4.git rebase和git merge的区别

  • rebase 会把你当前分支的 commit 放到公共分支的最后面,所以叫变基。就好像你从公共分支又重新拉出来这个分支一样。
  • 而 merge 会把公共分支和你当前的 commit 合并在一起,形成一个新的 commit 提交

优劣:

  • git merge 优点是分支代码合并后不破坏原分支代码的提交记录,缺点是会产生额外的提交记录并进行两条分支的合并
  • git rebase 优点是可以将对象分支的提交记录续道目标分支上,形成线性提交历史记录,review时更加直观

5.什么时候使用rebase

  • 不能在一个共享的分支上进行git rebase操作
    • 因为往后放的这些 commit 都是新的,这样其他从这个公共分支拉出去的人,都需要再重新merge,导致提交记录混乱

如下图:

总结

  • 合代码到公共分支上时用git merge
  • 合代码到个人分支时用git rebase,形成线性提交历史记录

三、git cherry-pick

1.基本使用

  • git cherry-pick 的使用场景就是将一个分支中的部分的提交合并到其他分支
git checkout master 
git cherry-pick <commitHash> 

使用以上命令以后,这个提交将会处在master的最前面

2.合并多个提交

git cherry-pick <hashA> <hashB>     // 合并两个提交
git cherry-pick <hashA>..<hashB>    // 合并从AB两个提交中到所有提交,但不包含A
git cherry-pick <hashA>^..<hashB>   // 合并从AB两个提交中到所有提交,包含A

3.pick以后产生了冲突

当执行了cherry-pick 命令如果有冲突,就会报冲突错误

git cherry-pick --continue  // 1. 解决完冲突以后,继续下一个 cherry-pick
git cherry-pick --abort   // 2. 如果不想解决冲突,要放弃合并,用此命令回到操作以前
git cherry-pick --quit   // 3. 不想解决冲突,放弃合并,且保持现有情况,不回到操作以前

4.转移到另一个代码库

git remote add target git://gitUrl //添加一个远程仓库target
git fetch target                   //远程代码抓取到本地
git log target/master              //获取该提交的哈希值

5.应用场景

想要合并某些内容,但又不想包含整个分支。这时用cherry-pick来合并单次提交

参考资料

Git merge和rebase分支合并命令的区别

玻璃钢生产厂家玻璃钢雕塑国内品牌重庆玻璃钢卡通雕塑厂家供应武汉学校玻璃钢雕塑价格艺术商场美陈生产公司周年庆典商场美陈订购上海秋季商场美陈批发玻璃钢房地产雕塑生产深圳常见商场美陈市场报价丽水特色玻璃钢雕塑温州水果玻璃钢雕塑丹东校园玻璃钢雕塑加工宣城定做玻璃钢雕塑江苏人物玻璃钢雕塑定做价格武汉市政工程绿化玻璃钢花盆无锡玻璃钢雕塑福建户外商场美陈销售植物玻璃钢雕塑设计制作海口生产玻璃钢雕塑厂家哪里有北京特色商场美陈供应玻璃钢花盆手绘板推荐上饶抽象玻璃钢雕塑定做价格玻璃钢雕塑价格批发惠东玻璃钢造型雕塑巢湖玻璃钢雕塑定制衡水卡通玻璃钢雕塑西安公园玻璃钢雕塑定做二手玻璃钢卡通雕塑贵州欧式玻璃钢雕塑价位上海玻璃钢花盆多少钱玻璃钢游戏人物雕塑香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化