你應該知道git rebase

2021-09-14 04:34:00 字數 1439 閱讀 3523

多人開發時,一般都會使用git來進行**管理。

使用過git的童鞋肯定對git pullgit pushgit merge非常熟悉。那麼,大家有沒有了解過git rebase命令呢?

rebase翻譯成中文叫「變基」,相比merge,rebase並沒有進行合併操作,該命令只是提取了當前分支的修改,將其複製在了目標分支的最新提交後面。

拿工作中常見的場景來舉例,小志和其他小夥伴一起開發乙個專案。

他們基於master分支生成develop分支,小志在develop分支上進行了兩個提交(develop分支修改1,develop分支修改2)。與此同時,其他小夥伴也進行了兩次提交(master分支修改1,master分支修改2),並且已經合併到了master分支。

現在要將小志的**合併到master分支上然後進行發版上線。

merge

我們都習慣了這樣操作:

在master分支上,使用git merge命令把develop分支合併到master分支。

由圖可見,合併時會新增乙個節點f87cb3b。其實這個節點並沒有實際意義。

rebase

讓我們來嘗試使用下rebase命令。

第一步,在develop分支上使用git rebase命令,提取develop分支上的修改,將其複製到master分支的最新提交後面。

第二步, 切換到master分支,使用git merge命令把develop分支合併到master分支。

重點來了,master的分支節點非常整潔,沒有類似merge branch 'develop' 資訊的多餘節點。而且看起來會更清楚:彷彿所有修改都是在一根線上先後進行的,儘管實際上它們原本是同時並行發生的。

這樣可以讓更好追蹤master分支上的變更,更好地對master分支進行維護。

如果僅僅使用merge,我們可能會得到這麼乙個讓人頭昏眼花的分支節點圖:

使用rebase的目的,就是想要得到乙個乾淨漂亮的歷史節點圖,利於分支的維護。

參考:

你應該知道的 RPC 原理

在校期間大家都寫過不少程式,比如寫個hello world服務類,然後本地呼叫下,如下所示。這些程式的特點是服務消費方和服務提供方是本地呼叫關係。而一旦踏入公司尤其是大型網際網路公司就會發現,公司的系統都由成千上萬大大小小的服務組成,各服務部署在不同的機器上,由不同的團隊負責。這時就會遇到兩個問題 ...

Vertical Align,你應該知道的一切

對哪些元素可以使用vertical align vertical align用於對齊行內元素。所謂行內元素,即display屬性值為下列之一的元素 inline inline block inline table 本文未涉及 其中,行內元素 inline element 就是包含文字的標籤。而行內塊...

你應該知道的HTTP頭 ETag

在http1.1規範中,新增了乙個http頭資訊 etag。對web開發者來說,它是乙個非常重要的資訊。它是用作快取使 用的兩個主要的 頭資訊之一 另乙個是expires 除此之外,在rest架構中,它還可以用於控制併發操作 上節中已經大 致介紹atompub中控 制併發的流 程 那麼etag是什麼...