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

新來個技術(shù)總監(jiān),禁止我們用Git的Rebase!

開發(fā) 前端
在共享倉庫的主分支上使用 merge:在共享倉庫的主分支(如 master 或 main)上,推薦使用 merge 來將開發(fā)的功能或修復(fù)合并回主分支。這樣可以保留每個開發(fā)者的提交歷史,易于跟蹤和回溯。

在Git中,merge和rebase是兩種不同的代碼合并策略,它們用于將一個分支的更改合并到另一個分支。它們的主要區(qū)別在于合并的方式和提交歷史的表現(xiàn)上

在介紹區(qū)別之前,我們先看下當我們從主干(Main)創(chuàng)建了一個新的分支(Feature)開始開發(fā)代碼時,然后另外有人把自己的代碼提交到主干(Main)之后,就會產(chǎn)生分叉的提交記錄。

圖片圖片

這時候你想把你的代碼也提交到主干中,就有兩個選擇了:merge(合并),rebase(變基)

Merge

git checkout feature
git merge main

git merge feature main

以上兩種都是把一個主干(main)的最新代碼合并(merge)到分支(featrue)的方式。

這個操作會在分支中創(chuàng)建一個新的“merge commit”,它將兩個分支的更改合并到一個新的提交中。

圖片圖片

如上圖,就是我們把Main中的新提交Merge到我們的Feature分支中。

Rebase

作為merge的替代方法,您可以使用以下命令將功能分支重新設(shè)置為主分支:

git checkout feature
git rebase main

這會將整個feature移動到main分支的頂端,從而有效地將所有新提交合并到 main 中。但是,rebase不是使用merge commit,而是通過為原始分支中的每個提交創(chuàng)建全新的提交來重寫項目歷史記錄。

圖片圖片

如上圖,就是我們將Main中新的提交,通過rebase的方式合并到我們的Feature分支中。(另外我出了一份Java面試寶典,里面有600多道面試常考題目)

區(qū)別

當我們想要把一個分支合并到主干的時候,merge操作會通過merge commit的方式在主干上新建一個節(jié)點,并一次性的把分支中的修改合并到主干中。它的優(yōu)點是分支代碼合并后不破壞原分支的代碼提交記錄,缺點就是會產(chǎn)生額外的提交記錄并進行兩條分支的合并。

而rebase操作,不會在主干上新建節(jié)點,而是把分支上的所有歷史提交都合并到主干中,形成一個完成的線性提交記錄。他的優(yōu)點是無須新增提交記錄到目標分支,rebase后可以將對象分支的提交歷史續(xù)上目標分支上,形成線性提交歷史記錄,進行review的時候更加直觀。

所以,merge rebase可以保留完整的歷史提交記錄。

當你想要保留原始分支的提交歷史,并且不介意在合并中產(chǎn)生額外的合并提交時,可以使用merge。在多人協(xié)作或公共分支上,merge是一個更安全和常見的選擇,因為它保留了每個開發(fā)者的提交歷史,易于跟蹤和回溯。(另外我出了一份Java面試寶典,里面有600多道面試常考題目)

當你想要保持提交歷史的整潔、線性,并且愿意改寫提交歷史時,可以使用rebase。在個人開發(fā)分支上,為了保持提交歷史的簡潔和易于閱讀,rebase用的更多。

一般來說,在公司內(nèi)部做團隊開發(fā),使用merge的情況會更多一些,我在工作中基本上90%的時間都是使用merge的。

Rebase黃金法則

一般來說,我們在工作中的開發(fā)模式都是基于分支開發(fā),基于主干發(fā)布的模式。什么意思呢?

就是倉庫中有一份主干的代碼,線上運行的就是這套代碼,當我們有需求要開發(fā)的時候,不會直接在主干上開發(fā),而是基于主干拉一個分支出來,在分支中進行開發(fā),開發(fā)好之后,再把這個分支的代碼通過發(fā)布的方式合并到主干中。

在業(yè)內(nèi)有一個rebase黃金法則:不要對已經(jīng)提交到共享倉庫(如遠程倉庫)的提交執(zhí)行 rebase。

為什么要遵守這個黃金法則呢?

rebase會將所有的Main分支上的提交移動到Feature分支的頂端,問題是這個操作只發(fā)生在你自己的本地倉庫中,所有的其他開發(fā)者是完全不感知的,因為他們是使用舊的Main分支創(chuàng)建的分支。(另外我出了一份Java面試寶典,里面有600多道面試常考題目)

圖片圖片

這時候如果我們的Feature變更被推送到遠程倉庫后,其他人的Feature想要在提交的時候,就會產(chǎn)生大量的沖突。

所以,在多人協(xié)作中,應(yīng)該遵循以下指導(dǎo)原則:

  1. 在個人開發(fā)分支上進行 rebase:如果你在個人開發(fā)分支上進行 rebase,這不會對其他開發(fā)者產(chǎn)生影響,因為這個分支只屬于你個人。
  2. 在共享倉庫的主分支上使用 merge:在共享倉庫的主分支(如 master 或 main)上,推薦使用 merge 來將開發(fā)的功能或修復(fù)合并回主分支。這樣可以保留每個開發(fā)者的提交歷史,易于跟蹤和回溯。
  3. 協(xié)作時協(xié)商:如果有特殊情況需要在共享倉庫的分支上進行 rebase,應(yīng)該與其他開發(fā)者進行充分協(xié)商,并確保大家都知道并同意這個變更。
責(zé)任編輯:武曉燕 來源: Hollis
相關(guān)推薦

2020-02-13 08:08:23

禁止使用Lombok

2020-02-12 14:03:25

實用Java工具

2022-07-04 09:43:46

RabbitMQ消息消息隊列

2023-01-04 17:19:21

MQ消息中間件

2022-01-17 09:41:43

布爾類型接口

2014-10-31 11:01:00

Git RebaseGit

2024-06-03 00:01:00

2025-04-27 08:00:00

分布式 ID分布式系統(tǒng)ID

2024-07-22 14:14:01

2021-01-04 13:25:10

Git開源工具

2024-06-28 10:25:18

2020-06-12 09:07:03

技術(shù)總監(jiān)數(shù)據(jù)庫

2024-07-05 15:26:59

代碼Merge分支

2021-08-17 07:15:16

Git RebaseGit Merge面試

2020-06-08 11:28:22

場景索引設(shè)計

2011-09-28 17:21:47

抄襲

2024-10-14 08:35:29

2011-04-22 11:25:17

2020-02-25 17:03:29

技術(shù)研發(fā)指標

2009-04-05 10:26:47

點贊
收藏

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

主站蜘蛛池模板: a级大片 | 91视频在线观看 | 欧美综合一区二区三区 | 91一区| 久久久久久成人网 | 黄网站色大毛片 | 成人看片在线观看 | 91免费在线看 | 91色视频在线观看 | 亚洲一区二区国产 | 噜噜噜色网 | 99精品国产一区二区三区 | 九九热这里 | 一级片免费视频 | 久久久久久亚洲 | 欧美一级片在线观看 | 一区二区在线看 | 黄色大片免费网站 | 91精品久久久久久久久久 | 国际精品久久 | 亚洲欧美一区二区三区国产精品 | 国产精品无码久久久久 | 久久99国产精品 | 国产中文字幕在线观看 | 超碰在线观看97 | 一区二区在线免费观看 | 精品久久一区 | 欧美一级在线 | 久热精品在线观看视频 | 一区二区精品 | 99精品99| 日韩欧美在 | 国产黄色在线观看 | 中文字幕乱码一区二区三区 | 91精品国产高清一区二区三区 | 亚洲综合在线网 | 在线欧美亚洲 | 人人亚洲 | 亚洲精品乱码 | 亚洲精品成人免费 | 婷婷丁香在线视频 |