詳解Git?的?rebase?命令使用方法
在基于 Git 的開發(fā)過程中,我們很容易遇到合并代碼的情況,例如我們從 master 分支拉取了一個 feature 分支,當我們開發(fā)到一段時間之后,可能需要將 master 的代碼合并到我們當前的 feature 分支之中。
這時,我們有兩個選擇,一個是使用git merge
命令,一個是使用git rebase
命令,這兩個命令都是用來合并代碼的,但卻有一些差異。在本文中,我們主要講述git rebase
命令的使用方法,也會簡單介紹這兩個命令的差異。
如上圖所示,我們從 master 分支拉取了一個名為 feature 的分支,并且在拉取新分支之后,有過三次提交記錄;同時,master 分支在我們拉取 feature 分支之后,也有過兩次提交記錄?,F(xiàn)在我們已經(jīng)構(gòu)造了背景,接下來我們合并代碼。
首次,我們使用merge
命令,其命令形式一般為git merge --no-ff master
,即表示將 master 的代碼合并到 feature 分支,其中--no-ff
參數(shù)是為了保留 master 分支的提交記錄。如上圖所示,在使用merge
命令進行代碼合并之后,Git 會自動創(chuàng)建一個新的 commit 用來表示當前的合并操作,此 commit 記錄了 master 代碼合并到 feature 分支時產(chǎn)生的所有改動。
接下來,我們使用rebase
命令,其命令一般形式為git rebase feature
,即表示在 master 分支上執(zhí)行rebase
命令,將 feature 分支的代碼合并到 master 分支。如上圖所示,在使用rebase
命令之后,Git 會合并兩個分支的 commit 記錄,其規(guī)則為「在基準分支上合并目標分支的代碼,會將目標分支的提交記錄全部前置到基準分支的最新提交記錄之前」,就如上面這樣,我們在 master 分支上使用了rebase
命令之后,Git 將 feature 分支上面的所有 commit 記錄都前置到了 master 分支的最新 commit 記錄之前。
在這里,需要注意的是:rebase
是以 commit 為維度的,按 commit 提交的順序依次進行合并操作;如果在合并的過程中,某個 commit 遇到了沖突,則需要我們先解決該沖突,然后才能繼續(xù)進行合并操作。特別地,在我們解決沖突之后,需要使用git add + 沖突文件
命令將當前沖突標記為已解決,然后使用git rebase --continue
命令繼續(xù)合并操作。
通過上面的描述,我們能發(fā)現(xiàn)merge
和rebase
有一個很明顯的差異,那就是當遇到?jīng)_突的時候,使用merge
命令,我們只需要解決一次沖突即可;使用rebase
命令,我們則需要依次解決每一個沖突。
對于 Git 的rebase
命令,其除了能進行代碼合并之外,還有一個常用的功能,那就是將多個 commit 合并為一個,仍然以上面的 feature 分支為例,我們將其從 master 分支拉取之后,進行了三次提交,現(xiàn)在我們將這三個提交結(jié)論合并為一個,其命令一般形式為:
git rebase -i HEAD~N
其中,N
為我們需要合并的 commit 記錄的數(shù)量,因為示例中是三次提交記錄,所以在此場景下,將N
替換為3
即可。
在執(zhí)行完上面的命令之后,我們會進入vi
或者vim
文件編輯器:
如上圖所示,pick
標識了我們的三次提交記錄,按i
建進入編輯模式,保留第一個pick
,然后將后面兩個pick
修改為s
或者f
,然后鍵入:wq
保留修改。最后,為了將變更同步到遠程分支,我們需要使用git push -f
命令,其中參數(shù)-f
表示強制提交。
到此這篇關(guān)于Git 的 rebase 命令使用方法的文章就介紹到這了,更多相關(guān)git rebase 命令內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
人工智能機器學習常用算法總結(jié)及各個常用算法精確率對比
這篇文章主要介紹了人工智能機器學習常用算法總結(jié)及各個常用算法精確率對比,需要的朋友可以參考下2020-03-03git?clone報錯SSL?connect?error解決
這篇文章主要為大家介紹了git?clone報錯SSL?connect?error解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-11-11回車和換行有什么區(qū)別?我們平時按下的Enter鍵是回車還是換行
如果用過機械打字機,就知道回車和換行的區(qū)別了。換行就是把滾筒卷一格,不改變水平位置。回車就是把水平位置復位,不卷動滾筒2011-03-03net-snmp靜態(tài)編譯鏈接的獲取程序及生成執(zhí)行程序詳解
這篇文章主要介紹了net-snmp靜態(tài)編譯鏈接的獲取程序及生成執(zhí)行程序詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-08-08HTTP協(xié)議入門_動力節(jié)點Java學院整理
這篇文章主要為大家詳細介紹了HTTP協(xié)議入門的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-07-07