git pull和git pull --rebase的使用


使用下面的關系區別這兩個操作:

git pull = git fetch + git merge

git pull --rebase = git fetch + git rebase

現在來看看git merge和git rebase的區別。

假設有3次提交A,B,C。

 
 

在遠程分支origin的基礎上創建一個名為"mywork"的分支並提交了,同時有其他人在"origin"上做了一些修改並提交了。

 
 

其實這個時候E不應該提交,因為提交后會發生沖突。如何解決這些沖突呢?有以下兩種方法:

1、git merge

用git pull命令把"origin"分支上的修改pull下來與本地提交合並(merge)成版本M,但這樣會形成圖中的菱形,讓人很困惑。

 
 

2、git rebase

創建一個新的提交R,R的文件內容和上面M的一樣,但我們將E提交廢除,當它不存在(圖中用虛線表示)。由於這種刪除,小李不應該push其他的repository.rebase的好處是避免了菱形的產生,保持提交曲線為直線,讓大家易於理解。

 
 

在rebase的過程中,有時也會有conflict,這時Git會停止rebase並讓用戶去解決沖突,解決完沖突后,用git add命令去更新這些內容,然后不用執行git-commit,直接執行git rebase --continue,這樣git會繼續apply余下的補丁。

在任何時候,都可以用git rebase --abort參數來終止rebase的行動,並且mywork分支會回到rebase開始前的狀態。

 

使用案例:  

Git錯誤non-fast-forward后的沖突解決

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM