1. 程式人生 > >簡單對比git pull和git pull --rebase的使用

簡單對比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 pullgit pull --rebase的使用

使用下面的關係區別這兩個操作:git pull = git fetch + git mergegit pull --rebase = git fetch + git rebase 現在來看看git merge和git rebase的區別。 假設有3次提交A,B,C。 在遠端分支origin的基礎

git pullgit pull -- rebase

在開始對比這兩條命令之前,請大家思考三個問題: 1 工作區不乾淨(沒有git add .)可以git pull或者git pull - -rebase程式碼嗎? 結果是不可以,如果你沒有將修改提交到暫存區,那麼無論是pull還是pul

git fetch git pull 的差別

ria 版本 trac con etc 更新 _id track pull Git中從遠程的分支獲取最新的版本號到本地有這樣2個命令: 1. git fetch:相當於是從遠程獲取最新版本號到本地,不會自己主動merge git fetch or

git:Git fetchgit pull的區別, 解決Git報錯:error: You have not concluded your merge (MERGE_HEAD exists).

pre ret mas -h ruby error you origin 分支 Git fetch和git pull的區別, 解決Git報錯:error: You have not concluded your merge (MERGE_HEAD exists). 解決

git clone、git pullgit fetch的用法及區別

更新 服務器 指定 保存 今天 文章 git fetch origin 收藏 聲明:碼字不易,轉載請註明出處,歡迎文章下方討論交流。 最近在一個學習小組裏學習AI的課程,我們所有的學習資料和homework都放在gitlab上。今天一個小隊友從gitlab上load倉庫的時

Git fetchgit pull的區別

Git中從遠端的分支獲取最新的版本到本地有這樣2個命令:1. git fetch:相當於是從遠端獲取最新版本到本地,不會自動mergegit fetch origin mastergit log -p master..origin/mastergit merge origin/master    以上命令的含

git 檢視遠端倉庫的資訊 以及 git fetch git pull 的區別

1.檢視遠端倉庫的資訊 可以通過命令 git remote show [remote-name] 檢視某個遠端倉庫的詳細資訊,比如要看所克隆的 origin 倉庫,可以執行: git remote show origin 2.git fetch:相當

git pushgit pull的預設行為

一直以來對Git push與git pull命令的預設行為感覺混亂,今天抽空總結下。 git push 通常對於一個本地的新建分支,例如git checkout -b develop, 在develop分支commit了程式碼之後,如果直接執行git push命令,develop分支將不會被push到遠端

git fetch git pull 的差別

1、git fetch 相當於是從遠端獲取最新到本地,不會自動merge,如下指令:    git fetch or

git merge git rebase 小結

git merge是用來合併兩個分支的。 git merge b       # 將b分支合併到當前分支 同樣 git rebase b,也是把 b分支合併到當前分支 -------------

同樣是合併,git mergegit rebase有什麼區別?

參考部落格 [1]https://www.cnblogs.com/marblemm/p/7161614.html [2]https://blog.csdn.net/liuxiaoheng1992/article/details/79108233 [3]https://blog.csd

git mergegit rebase的區別(轉)

Description git rebase 和 git merge 一樣都是用於從一個分支獲取並且合併到當前分支,但是他們採取不同的工作方式,以下面的一個工作場景說明其區別 場景: 如圖所示:你在一個feature分支進行新特性的開發,與此同時,ma

利用git bashgit gui向git遠程倉庫提交文件

article bash 命令 rep 路徑 stage chang osi .html 1、首先在該文件夾下git init 2、然後在github下面創建一個新倉庫去存儲你的代碼 3、然後利用add添加遠程倉庫 4、然後點擊stage changed 5、最後點擊長傳

git merge git merge --no-ff

title ack lines rip print () pri addclass int 依據這張圖片能夠看出 git merge –no-ff 能夠保存你之前的分支歷史。能夠更好的查看 merge歷史。以及branch 狀態。 git m

git addgit commit

stage mod com 指定 for 命令 現在 ssa -m git命令使用:提交前可指定要提交哪些文件,然後使用git commit來提交 樣例: git status 輸出: Changes to be committed: modified: ap

git 命令 git stash git stash pop

今天 merge 報錯 版本 pull 一個 一次 後來 更新 今天好心累 居然把我寫的東西都沒了 本地和遠程的版本差別太大 於是我想更新一下 更新的時候報錯了 於是我按照老師的來 之前忘記了他怎麽操作的 只記得有 git stash -> git merge -&

使用plumbing命令來深入理解git addgit commit的工作原理

clean 結果 write 文件的 repos 倉庫 head 根據 acc 前言: plumbing命令 和 porcelain命令 git中的命令分為plumbing命令和porcelain命令: porcelain命令就是我們常用的git add,git comm

伺服器上安裝git倉庫git本地

 原文來自:    https://blog.csdn.net/li_wen01/article/details/52411543 git伺服器搭建,本來是一件簡單的事情,但是因為網上的很多教程都不詳細,造成的後果就是搭建出來的伺服器很多的許可權的問題,於

git的常用指令(二) git add -A 、git add . git add -u

git add . :他會監控工作區的狀態樹,使用它會把工作時的所有變化提交到暫存區,包括檔案內容修改(modified)以及新檔案(new),但不包括被刪除的檔案。 git add -u :他僅監控已經被add的檔案(即tracked file),他會將被修改的檔案提交到暫存區。add -u 不會提交新檔

git revertgit reset的區別

原文:http://blog.csdn.net/koffuxu/article/details/6731876 git revert  是生成一個新的提交來撤銷某次提交,此次提交之前的commit都會被保留 git reset  是