Git / git clone 、git pull 和 git fetch
一、git clone
Git 的 clone 命令的工作如下:
1、自動(dòng)將遠(yuǎn)程主機(jī)命名為 origin,拉取它的所有數(shù)據(jù)。
2、創(chuàng)建一個(gè)指向它的 master 分支的指針,并且在本地將其命名為 origin/master。
3、創(chuàng)建一個(gè)與 origin 的 master 分支在指向同一個(gè)地方的本地 master 分支。
?
二、git fetch
1、本地有提交,遠(yuǎn)程也有別人的推送
遠(yuǎn)程庫(kù)有人推送,提交了 C0 和 C1:
?本地提交了 D0 和 D1:
只要你不與 origin 服務(wù)器連接,你的 origin/master 指針就不會(huì)移動(dòng)。
?2、同步
如果要同步遠(yuǎn)程庫(kù)到你的工作,運(yùn)行 git fetch origin 命令。
$ git fetch origin這個(gè)命令功能:
(1)查找 “origin” 是哪一個(gè)服務(wù)器,從中抓取本地沒有的數(shù)據(jù);
(2)更新本地?cái)?shù)據(jù)庫(kù),移動(dòng) origin/master 指針指向新的、更新后的位置。
要特別注意的一點(diǎn)是 fetch 抓取到新的遠(yuǎn)程跟蹤分支時(shí),本地的工作區(qū)(workspace)不會(huì)自動(dòng)生成一份可編輯的副本,抓取結(jié)果是直接送到版本庫(kù)(Repository)中。如下圖:
?
打個(gè)比方,在遠(yuǎn)程庫(kù) origin 新建了一個(gè)分支 dev,git fetch 后本地不會(huì)生成一個(gè)新的分支 dev(可用 git branch 查看),只有一個(gè)不可以修改的 origin/dev 指針。
3、在 origin/master 后繼續(xù)工作
如果想要在 origin/master 分支上工作,可以新建分支 test 并將其建立在遠(yuǎn)程跟蹤分支之上:
$ git checkout -b test(本地分支) origin/master(遠(yuǎn)程分支)這會(huì)給你新建一個(gè)用于工作的本地分支 test,并且起點(diǎn)位于 origin/master。
4、合并
??? 如果想把拉取的結(jié)果合并到本地分支,需要手動(dòng)合并。使用如下命令:
$ git chekout master $ git merge origin/master然而,看到上面的合并結(jié)果會(huì)想到命令 git pull 。在大多數(shù)情況下它的含義是一個(gè) git fetch 緊接著一個(gè) git merge 命令。即 git pull 是 git fetch 和 git merge 的兩步的和。
但是由于 git pull 的使用經(jīng)常令人困惑,所以通常單獨(dú)顯式地使用 fetch 與 merge 命令會(huì)更好一些。
?
(SAW:Game Over!)
總結(jié)
以上是生活随笔為你收集整理的Git / git clone 、git pull 和 git fetch的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搞懂函数调用前后堆栈恢复的过程
- 下一篇: GDB / TUI 模式