git rebase是什麼意思
git rebase的意思是:重新定義分支的版本庫狀態;當執行rebase操作時,git會從兩個分支的共同祖先開始提取待變基分支上的修改,然後將待變基分支指向基分支的最新提交,最後將剛才提取的修改應用到基分支的最新提交的後面。
本教學操作環境:Windows7系統、Git2.30.0版、Dell G3電腦。
git rebase,顧名思義,就是重新定義(re)起點(base)的作用,也就是重新定義分支的版本庫狀態。
一、提交節點圖解
首先透過簡單的提交節點圖解感受一下rebase在做什麼
兩個分支master和feature,其中feature是在提交點B處從master上拉出的分支
master上有一個新提交M,feature上有兩個新提交C和D
此時切換到feature分支上,執行下列指令,相當於想要把master分支合併到feature分支
git checkout feature git rebase master //这两条命令等价于git rebase master feature
下圖為變基後的提交節點圖,解釋一下其運作原理:
- 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變色分叉出來,這不影響理解,知道是表示兩個分支兩條線即可!)
此時,在feature分支上執行git rebase master
變基完成以後,ABCD是原來的feature分支線,ABMC'D'是新的feature分支線,ABM是master分支線(沒有變化)
三、建議使用場景
搞來搞去那麼多,這其實是最重要的。不同公司,不同情況有不同使用場景,不過大部分情況推薦如下:
拉公共分支最新程式碼的時候使用rebase,也就是git pull -r或git pull -- rebase,但有個缺點就是rebase以後我就不知道我目前的分支最早是從哪個分支拉出來的了,因為基底變了嘛。 (如果使用merge,多出無意義的一筆提交記錄「Merge … to …」)
#往公共分支上合程式碼的時候,使用merge。 (如果使用rebase,那麼其他開發人員想看主分支的歷史,就不是原來的歷史了,歷史已經被你篡改了)
推薦學習:《Git教程》
以上是git rebase是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

要通過 Git 下載項目到本地,請按以下步驟操作:安裝 Git。導航到項目目錄。使用以下命令克隆遠程存儲庫:git clone https://github.com/username/repository-name.git

更新 git 代碼的步驟:檢出代碼:git clone https://github.com/username/repo.git獲取最新更改:git fetch合併更改:git merge origin/master推送更改(可選):git push origin master

要回退 Git 提交,可以使用 git reset --hard HEAD~N 命令,其中 N 代表要回退的提交數量。詳細步驟包括:確定要回退的提交數量。使用 --hard 選項以強制回退。執行命令以回退到指定的提交。

要刪除 Git 倉庫,請執行以下步驟:確認要刪除的倉庫。本地刪除倉庫:使用 rm -rf 命令刪除其文件夾。遠程刪除倉庫:導航到倉庫設置,找到“刪除倉庫”選項,確認操作。

如何更新本地 Git 代碼?用 git fetch 從遠程倉庫拉取最新更改。用 git merge origin/<遠程分支名稱> 將遠程變更合併到本地分支。解決因合併產生的衝突。用 git commit -m "Merge branch <遠程分支名稱>" 提交合併更改,應用更新。

為了安全連接遠程 Git 服務器,需要生成包含公鑰和私鑰的 SSH 密鑰。生成 SSH 密鑰的步驟如下:打開終端,輸入命令 ssh-keygen -t rsa -b 4096。選擇密鑰保存位置。輸入密碼短語以保護私鑰。將公鑰複製到遠程服務器上。將私鑰妥善保存,因為它是訪問帳戶的憑據。

要查看 Git 倉庫地址,請執行以下步驟:1. 打開命令行並導航到倉庫目錄;2. 運行 "git remote -v" 命令;3. 查看輸出中的倉庫名稱及其相應的地址。

Git 代碼合併過程:拉取最新更改以避免衝突。切換到要合併的分支。發起合併,指定要合併的分支。解決合併衝突(如有)。暫存和提交合併,提供提交消息。
