成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面試官:說說你對(duì)Git Rebase 和 Git Merge的理解?區(qū)別?

網(wǎng)絡(luò) 通信技術(shù)
rebase會(huì)將整個(gè)分支移動(dòng)到另一個(gè)分支上,有效地整合了所有分支上的提交,主要的好處是歷史記錄更加清晰,是在原有提交的基礎(chǔ)上將差異內(nèi)容反映進(jìn)去,消除了 git merge所需的不必要的合并提交。

[[417941]]

本文轉(zhuǎn)載自微信公眾號(hào)「JS每日一題 」,作者灰灰 。轉(zhuǎn)載本文請(qǐng)聯(lián)系JS每日一題公眾號(hào)。

一、是什么

在使用 git 進(jìn)行版本管理的項(xiàng)目中,當(dāng)完成一個(gè)特性的開發(fā)并將其合并到 master 分支時(shí),會(huì)有兩種方式:

  • git merge
  • git rebase

git rebase 與 git merge都有相同的作用,都是將一個(gè)分支的提交合并到另一分支上,但是在原理上卻不相同

用法上兩者也十分的簡(jiǎn)單:

git merge

將當(dāng)前分支合并到指定分支,命令用法如下:

  1. git merge xxx 

git rebase

將當(dāng)前分支移植到指定分支或指定commit之上,用法如下:

 

  1. git rebase -i <commit

常見的參數(shù)有--continue,用于解決沖突之后,繼續(xù)執(zhí)行rebase

  1. git rebase --continue 

二、分析

git merge

通過git merge將當(dāng)前分支與xxx分支合并,產(chǎn)生的新的commit對(duì)象有兩個(gè)父節(jié)點(diǎn)

如果“指定分支”本身是當(dāng)前分支的一個(gè)直接子節(jié)點(diǎn),則會(huì)產(chǎn)生快照合并

舉個(gè)例子,bugfix分支是從master分支分叉出來的,如下所示:

合并bugfix分支到master分支時(shí),如果master分支的狀態(tài)沒有被更改過,即 bugfix分支的歷史記錄包含master分支所有的歷史記錄

所以通過把master分支的位置移動(dòng)到bugfix的最新分支上,就完成合并

如果master分支的歷史記錄在創(chuàng)建bugfix分支后又有新的提交,如下情況:

這時(shí)候使用git merge的時(shí)候,會(huì)生成一個(gè)新的提交,并且master分支的HEAD會(huì)移動(dòng)到新的分支上,如下:

從上面可以看到,會(huì)把兩個(gè)分支的最新快照以及二者最近的共同祖先進(jìn)行三方合并,合并的結(jié)果是生成一個(gè)新的快照

git rebase

同樣,master分支的歷史記錄在創(chuàng)建bugfix分支后又有新的提交,如下情況:

通過git rebase,會(huì)變成如下情況:

 

在移交過程中,如果發(fā)生沖突,需要修改各自的沖突,如下:

rebase之后,master的HEAD位置不變。因此,要合并master分支和bugfix分支

從上面可以看到,rebase會(huì)找到不同的分支的最近共同祖先,如上圖的B

然后對(duì)比當(dāng)前分支相對(duì)于該祖先的歷次提交,提取相應(yīng)的修改并存為臨時(shí)文件(老的提交X和Y也沒有被銷毀,只是簡(jiǎn)單地不能再被訪問或者使用)

然后將當(dāng)前分支指向目標(biāo)最新位置D, 然后將之前另存為臨時(shí)文件的修改依序應(yīng)用

三、區(qū)別

從上面可以看到,merge和rebasea都是合并歷史記錄,但是各自特性不同:

merge

通過merge合并分支會(huì)新增一個(gè)merge commit,然后將兩個(gè)分支的歷史聯(lián)系起來

其實(shí)是一種非破壞性的操作,對(duì)現(xiàn)有分支不會(huì)以任何方式被更改,但是會(huì)導(dǎo)致歷史記錄相對(duì)復(fù)雜

rebase

rebase會(huì)將整個(gè)分支移動(dòng)到另一個(gè)分支上,有效地整合了所有分支上的提交

主要的好處是歷史記錄更加清晰,是在原有提交的基礎(chǔ)上將差異內(nèi)容反映進(jìn)去,消除了 git merge所需的不必要的合并提交

參考文獻(xiàn)

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

https://yuweijun.github.io/git-zh/1-git-branching.html#_rebasing

 

https://backlog.com/git-tutorial/cn/stepup/stepup1_4.html

 

責(zé)任編輯:武曉燕 來源: JS每日一題
相關(guān)推薦

2021-08-19 08:36:22

Git ResetGit Revert版本

2021-08-09 07:47:40

Git面試版本

2021-08-16 08:33:26

git

2021-11-25 10:18:42

RESTfulJava互聯(lián)網(wǎng)

2020-12-01 08:47:36

Java異常開發(fā)

2020-06-12 15:50:56

options前端服務(wù)器

2024-07-22 14:14:01

2024-06-28 10:25:18

2021-08-12 07:49:25

Git 索引HEAD

2021-09-16 07:52:18

算法應(yīng)用場(chǎng)景

2021-11-08 11:32:01

觀察

2021-10-15 09:53:12

工具

2021-08-11 08:53:23

Git命令面試

2019-05-10 10:50:04

Spring AOPJDK動(dòng)態(tài)代理CGLIB動(dòng)態(tài)代理

2021-09-07 08:33:27

JavaScript TypeScript 函數(shù)

2021-11-09 08:51:13

模式命令面試

2020-12-04 06:27:04

序列化面試官Java

2021-11-05 07:47:56

代理模式對(duì)象

2021-11-02 22:04:58

模式

2021-11-10 07:47:49

組合模式場(chǎng)景
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产美女视频 | 欧美日韩亚洲视频 | 欧美成人激情 | 999久久久久久久久6666 | 国产一区二区三区四区三区四 | 狠狠做深爱婷婷综合一区 | 精品在线一区 | 久久亚洲一区二区三区四区 | 日日夜夜精品视频 | 亚洲综合色网 | 免费在线精品视频 | 91精品国产综合久久国产大片 | 人人艹人人 | 91中文字幕在线观看 | 日韩在线国产精品 | 国产精品久久久久久久午夜片 | www.久草| 日本精品一区二区三区视频 | 国产大片黄色 | 中文字幕乱码一区二区三区 | 国产精品久久久久久久久久久新郎 | 成人精品国产一区二区4080 | 亚洲精品一区二区网址 | 99久久婷婷国产亚洲终合精品 | 羞视频在线观看 | 粉嫩av久久一区二区三区 | 九九久久久 | 亚洲精品久久久一区二区三区 | 91精品免费 | 亚洲一区二区在线播放 | 欧美性极品xxxx做受 | 亚洲视频三| 免费成人高清在线视频 | 喷水毛片| 日韩精品成人 | 欧美激情一区二区 | 91大神在线看 | 国产乱码精品一区二区三区五月婷 | 九九综合 | 色综合久久久 | 成人免费在线播放 |