Git fetch pull 详解
1、簡(jiǎn)單概括
先用一張圖來理一下git fetch和git pull的概念:
可以簡(jiǎn)單的概括為:
git fetch是將遠(yuǎn)程主機(jī)的最新內(nèi)容拉到本地,用戶在檢查了以后決定是否合并到工作本機(jī)分支中。
而git pull 則是將遠(yuǎn)程主機(jī)的最新內(nèi)容拉下來后直接合并,即:git pull = git fetch + git merge,這樣可能會(huì)產(chǎn)生沖突,需要手動(dòng)解決。
下面我們來詳細(xì)了解一下git fetch 和git pull 的用法。?
2、分支的概念
在介紹兩種方法之前,我們需要先了解一下分支的概念:?
分支是用來標(biāo)記特定代碼的提交,每一個(gè)分支通過SHA1sum值來標(biāo)識(shí),所以對(duì)分支的操作是輕量級(jí)的,你改變的僅僅是SHA1sum值。
如下圖所示,當(dāng)前有2個(gè)分支,A,C,E屬于master分支,而A,B,D,F屬于dev分支。
A----C----E(master)
?\
? B---D---F(dev)
它們的head指針分別指向E和F,對(duì)上述做如下操作:
git checkout master ?//選擇or切換到master分支
git merge dev ? ? ? ?//將dev分支合并到當(dāng)前分支(master)中
合并完成后:
A---C---E---G(master)
?\ ? ? ? ? /
? B---D---F(dev)
現(xiàn)在ABCDEFG屬于master,G是一次合并后的結(jié)果,是將E和F的代碼合并后的結(jié)果,可能會(huì)出現(xiàn)沖突。而ABDF依然屬于dev分支。可以繼續(xù)在dev的分支上進(jìn)行開發(fā):
A---C---E---G---H(master)
?\ ? ? ? ? /
? B---D---F---I(dev)
分支(branch)的基本操作:
git branch //查看本地所有分支?
git branch -r //查看遠(yuǎn)程所有分支
git branch -a //查看本地和遠(yuǎn)程的所有分支
git branch <branchname> //新建分支
git branch -d <branchname> //刪除本地分支
git branch -d -r <branchname> //刪除遠(yuǎn)程分支,刪除后還需推送到服務(wù)器
git push origin:<branchname> ?//刪除后推送至服務(wù)器
git branch -m <oldbranch> <newbranch> //重命名本地分支
/**
*重命名遠(yuǎn)程分支:
*1、刪除遠(yuǎn)程待修改分支
*2、push本地新分支到遠(yuǎn)程服務(wù)器
*/
//git中一些選項(xiàng)解釋:
-d
--delete:刪除
-D
--delete --force的快捷鍵
-f
--force:強(qiáng)制
-m
--move:移動(dòng)或重命名
-M
--move --force的快捷鍵
-r
--remote:遠(yuǎn)程
-a
--all:所有
?
3、git fetch 用法
git fetch 命令:
$ git fetch <遠(yuǎn)程主機(jī)名> //這個(gè)命令將某個(gè)遠(yuǎn)程主機(jī)的更新全部取回本地
如果只想取回特定分支的更新,可以指定分支名:
$ git fetch <遠(yuǎn)程主機(jī)名> <分支名> //注意之間有空格
最常見的命令如取回origin 主機(jī)的master 分支:
$ git fetch origin master
取回更新后,會(huì)返回一個(gè)FETCH_HEAD ,指的是某個(gè)branch在服務(wù)器上的最新狀態(tài),我們可以在本地通過它查看剛?cè)』氐母滦畔?#xff1a;
$ git log -p FETCH_HEAD
如圖:?
可以看到返回的信息包括更新的文件名,更新的作者和時(shí)間,以及更新的代碼(19行紅色[刪除]和綠色[新增]部分)。
我們可以通過這些信息來判斷是否產(chǎn)生沖突,以確定是否將更新merge到當(dāng)前分支。?
4、git pull 用法
前面提到,git pull 的過程可以理解為:
git fetch origin master //從遠(yuǎn)程主機(jī)的master分支拉取最新內(nèi)容?
git merge FETCH_HEAD ? ?//將拉取下來的最新內(nèi)容合并到當(dāng)前所在的分支中
即將遠(yuǎn)程主機(jī)的某個(gè)分支的更新取回,并與本地指定的分支合并,完整格式可表示為:
$ git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
如果遠(yuǎn)程分支是與當(dāng)前分支合并,則冒號(hào)后面的部分可以省略:
$ git pull origin next
?
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Git fetch pull 详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mybatis源码阅读(五 ):接口层—
- 下一篇: Axure元件库:ElementUI元件