搜尋
首頁開發工具Gitgit rebase是什麼意思

git rebase的意思是:重新定義分支的版本庫狀態;當執行rebase操作時,git會從兩個分支的共同祖先開始提取待變基分支上的修改,然後將待變基分支指向基分支的最新提交,最後將剛才提取的修改應用到基分支的最新提交的後面。

git rebase是什麼意思

本教學操作環境:Windows7系統、Git2.30.0版、Dell G3電腦。

git rebase,顧名思義,就是重新定義(re)起點(base)的作用,也就是重新定義分支的版本庫狀態。

一、提交節點圖解

首先透過簡單的提交節點圖解感受一下rebase在做什麼

兩個分支master和feature,其中feature是在提交點B處從master上拉出的分支

master上有一個新提交M,feature上有兩個新提交C和D

git rebase是什麼意思
此時切換到feature分支上,執行下列指令,相當於想要把master分支合併到feature分支

git checkout feature
git rebase master

//这两条命令等价于git rebase master feature

下圖為變基後的提交節點圖,解釋一下其運作原理:

git rebase是什麼意思

  • feature:待變基底分支、目前分支
  • master:基底分支、目標分支

官方解釋:執行rebase操作時,git會從兩個分支的共同祖先開始提取待變基分支上的修改,然後將待變基分支指向基分支的最新提交,最後將剛才提取的修改應用到基分支的最新提交的後面。

結合範例解釋:當在feature分支上執行git rebase master時,git會從master和featuer的共同祖先B開始提取feature分支上的修改,也就是C和D兩個提交,先提取到。然後將feature分支指向master分支的最新提交上,也就是M。最後把提取的C和D接到M後面,但這個過程是刪除原來的C和D,生成新的C’和D’,他們的提交內容一樣,但commit id不同。 feature自然最後也是指向D’。

通俗解釋(重要!):rebase,變基,可以直接理解為改變基底。 feature分支是基於master分支的B被拉出來的分支,feature的基底是B。而master在B之後有新的提交,就等於此時要用master上新的提交來作為feature分支的新基底。實際操作為把B之後feature的提交存下來,然後刪除原來這些提交,再找到master的最新提交位置,把存下來的提交再接上去(新節點新commit id),如此feature分支的基底就相當於是變成了M而不是原來的B了。

其中還有一句解釋也很直白,rebase 指令其實關鍵在於理解「基」,git rebase ,就是將基分支與目前分支的差異提交(分岔點之後)取得到,然後在「基底分支」最新提交點後面將差異提交逐個再次提交,最後將目前分支的HEAD 指標指向最新的提交點


二、實際git提交範例

按照上面的圖解構造了提交記錄,如下圖所示:(ABM是master分支線,ABCD是feature分支線。這裡畫成了master變色分叉出來,這不影響理解,知道是表示兩個分支兩條線即可!)

git rebase是什麼意思
此時,在feature分支上執行git rebase master

變基完成以後,ABCD是原來的feature分支線,ABMC'D'是新的feature分支線,ABM是master分支線(沒有變化)

git rebase是什麼意思


三、建議使用場景

搞來搞去那麼多,這其實是最重要的。不同公司,不同情況有不同使用場景,不過大部分情況推薦如下:

  • 拉公共分支最新程式碼的時候使用rebase,也就是git pull -r或git pull -- rebase,但有個缺點就是rebase以後我就不知道我目前的分支最早是從哪個分支拉出來的了,因為基底變了嘛。 (如果使用merge,多出無意義的一筆提交記錄「Merge … to …」)

  • #往公共分支上合程式碼的時候,使用merge。 (如果使用rebase,那麼其他開發人員想看主分支的歷史,就不是原來的歷史了,歷史已經被你篡改了)

推薦學習:《Git教程

以上是git rebase是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
git軟件是乾嘛的 git軟件怎麼使用?git軟件是乾嘛的 git軟件怎麼使用?Apr 17, 2025 pm 12:09 PM

Git 是一款分佈式版本控制系統,旨在跟踪代碼變化並允許協作式開發。它使開發人員能夠記錄項目演變、管理代碼合併,並以高效且安全的方式維護項目歷史。通過 Git 的分佈式架構,每個開發者擁有項目完整副本,無需與中央服務器通信即可執行常見的版本控制操作。

git軟件安裝教程git軟件安裝教程Apr 17, 2025 pm 12:06 PM

Git 軟件安裝指南:訪問 Git 官方網站下載適用於 Windows、MacOS 或 Linux 的安裝程序。運行安裝程序並按照提示進行操作。配置 Git:設置用戶名、電子郵件並選擇文本編輯器。對於 Windows 用戶,配置 Git Bash 環境。

git軟件是乾嘛的git軟件是乾嘛的Apr 17, 2025 pm 12:03 PM

Git 是一款分佈式版本控制系統,具備以下功能和優點:分佈式:每個開發者都有代碼庫的完整副本,即使沒有網絡連接也可以協作。版本控制:記錄代碼庫的每次變更,便於回滾、比較差異和查看歷史。協作:支持多位開發者同時工作,可以創建分支進行更改並合併回主代碼庫。非線性歷史:允許創建和合併分支,實現代碼的不同版本和分支。

代碼管理軟件git代碼管理軟件gitApr 17, 2025 pm 12:00 PM

Git 是一個開源的分佈式版本控制系統,用於跟踪代碼庫變化,協作工作和管理項目歷史記錄。其優勢包括:1. 分佈式架構,允許離線協作;2. 輕量級,僅跟踪代碼變化;3. 高效的分支;4. 可靠的歷史記錄;5. 協作友好,提供中央存儲庫進行代碼共享。 Git 的基本工作原理是將代碼庫存儲為一系列歷史快照,開發人員在本地創建提交,然後推送到共享存儲庫中。其基本命令包括初始化存儲庫、添加文件到暫存區、提交更改、推送和拉取更改、創建或列出分支、合併更改。 Git 在現代開發中已成為不可或缺的工具,

git軟件安裝git軟件安裝Apr 17, 2025 am 11:57 AM

安裝 Git 軟件包括以下步驟:下載安裝包運行安裝包驗證安裝配置 Git安裝 Git Bash(僅限 Windows)

git軟件怎麼下載git軟件怎麼下載Apr 17, 2025 am 11:54 AM

要下載 Git 軟件,請訪問官方網站並選擇適用於您操作系統的安裝程序(Windows、macOS、Linux)。安裝完成後,可通過命令提示符輸入“git --version”驗證安裝。

git界面化軟件git界面化軟件Apr 17, 2025 am 11:51 AM

推薦的 Git 界面化工具:GitKraken:功能強大、易用的付費軟件,提供豐富的可視化工具。 SourceTree:界面簡潔、操作直觀的付費軟件,適合初學者和專業人士。 GitLab:基於 Web 的 DevOps 解決方案,除了 git 管理功能外,還提供了代碼審查、CI/CD 等功能。 Visual Studio Code:流行的代碼編輯器,內置了強大的 git 集成,可以方便地進行代碼提交、衝突解決等操作。 PyCharm:專為 Python 開發人員設計的 IDE,包含了全面的 git 集成

軟件項目管理工具git軟件項目管理工具gitApr 17, 2025 am 11:48 AM

Git是一種強大的分佈式版本控制系統,它通過以下特性實現了高效的軟件項目管理: 1. 分佈式版本控制:每個團隊成員都有自己的代碼庫副本,方便獨立工作。 2. 版本跟踪:存儲代碼快照,允許回滾或比較不同版本。 3. 分支功能:創建分支以獨立開發新功能,避免影響主代碼庫。 4. 合併機制:輕鬆將更改合併回主代碼庫,並解決衝突。 5. 拉取請求:允許代碼審查以確保質量和一致性。 Git的優勢包括協作開發、詳細版本記錄、靈活的分支、代碼審查和輕量高效。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

VSCode Windows 64位元 下載

VSCode Windows 64位元 下載

微軟推出的免費、功能強大的一款IDE編輯器

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中