git 實踐(一) pull的使用

空谷幽蘭

目錄:

git 實踐(一) pull的使用
git 實踐(二) push的使用
git 實踐(三) 建立關(guān)聯(lián)分支

前言

工作中,我們會用到git pull來從遠(yuǎn)程倉庫"同步"代碼吗蚌,通常有三種方式;

git pull origin <remote_branch>:<local_branch>
git pull origin <remote_branch>
git pull

這三種用法充分詮釋了什么是簡即繁繁即簡香嗓;看上去簡單的驶拱,往往背后蘊藏玄機额获;

測試環(huán)境:
本地分支:master和dev
遠(yuǎn)程分支:master和dev

$ git branch -a
* dev
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/dev
  remotes/origin/master

1.git pull origin <remote_branch>:<local_branch>

這種用法寫起來最為繁瑣够庙,但最好理解:

場景:當(dāng)本地的當(dāng)前分支不是local_branch;
作用:將遠(yuǎn)程分支拉取到指定本地分支抄邀;

例如:當(dāng)前分支是dev耘眨,但是你想把遠(yuǎn)程master”同步”到本地master,但又不想使checkout切換到master分支撤摸;
這時你就可以使用git pull origin master:master

zhangchangzhi@ZBXXXX /e/02.Workspace-test/gitTest (dev)
$ git pull origin master:master
From https://github.com/jinxintang/gitTest
   a09fdc4..941758f  master     -> master
Already up-to-date.

從上述代碼可以看到毅桃,我當(dāng)前分支為dev,但執(zhí)行"同步”操作的卻是在master分支;

2.git pull origin <remote_branch>

有了上面的例子准夷,這種使用方法的場景和作用就好理解了:

場景:在當(dāng)前分支上進(jìn)行同步操作;
作用:將指定遠(yuǎn)程分支同步到當(dāng)前本地分支莺掠;

廢話不說衫嵌,上代碼:

zhangchangzhi@ZBXXX /e/02.Workspace-test/gitTest (dev)
$ git pull origin master
From https://github.com/jinxintang/gitTest
 * branch            master     -> FETCH_HEAD
Already up-to-date.

把遠(yuǎn)程master分支同步到HEAD分支(HEAD分支指向當(dāng)前位置);

3.git pull

這種寫法最簡單彻秆,也最常用楔绞,但是隱含的知識也是最多的;

場景:本地分支已經(jīng)和想要拉取的分支建立了“關(guān)聯(lián)”關(guān)系唇兑;
作用:拉取所有遠(yuǎn)程分支的新版本"坐標(biāo)"酒朵,并同步當(dāng)前分支的本地代碼(具體根據(jù)關(guān)聯(lián)分支而定)

什么是"關(guān)聯(lián)"分支?

首先我們先使用git branch -vv 查看一下目前分支的“關(guān)聯(lián)”情況;

$ git branch -vv
* dev    1a1b215 [origin/dev] Merge branch 'master' of https://github.com/jinxintang/gitTest into dev
  master a09fdc4 [origin/master] create pull 

可以看到我們的本地的dev關(guān)聯(lián)的是遠(yuǎn)程(origin)的dev扎附,本地的master關(guān)聯(lián)的是遠(yuǎn)程(origin)的master;
那么這種關(guān)聯(lián)是如何建立蔫耽、是否可以修改呢;
配置本地分支與遠(yuǎn)程分支的三種方法:
1.檢出時建立關(guān)聯(lián)關(guān)系:git checkout -b dev origin/dev
當(dāng)我們檢查時留夜,git會自動為我們檢出的分支和遠(yuǎn)程分支建立關(guān)聯(lián)關(guān)系匙铡;
2.提交時配置關(guān)聯(lián)關(guān)系:git push -u origin <remote_branch>git push --set-upstream origin <remote_branch>

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git branch -vv
* dev_zcz 3b7001a [origin/dev] cm
  master  a09fdc4 [origin/master] create pull

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git push -u origin dev_zcz
Everything up-to-date
Branch dev_zcz set up to track remote branch dev_zcz from origin.

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git branch -vv
* dev_zcz 3b7001a [origin/dev_zcz] cm
  master  a09fdc4 [origin/master] create pull

通過上面的例子可以看到push前dev_zcz關(guān)聯(lián)的是origin/dev,執(zhí)行push -u 后管理分支改為origin/dev_zcz
注:默認(rèn)配置下图甜,提交時本地分支需和遠(yuǎn)程分支同名;

3.更改git/config文件:git branch --set-upstream-to=<remote_branch>

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git branch --set-upstream-to=origin/zcz
Branch dev_zcz set up to track local branch origin/zcz.

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_zcz)
$ git branch -vv
* dev_zcz    3b7001a [origin/zcz] cm
  master     a09fdc4 [origin/master] create pull
  origin/zcz 3b7001a [dev_zcz] cm

無論使用上述那種方法鳖眼,本地分支和遠(yuǎn)程分支的“關(guān)聯(lián)”最終都會寫到config文件黑毅;

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest/.git (GIT_DIR!)
$ cat config
[core]
        repositoryformatversion = 0
        filemode = false
        bare = false
        logallrefupdates = true
        symlinks = false
        ignorecase = true
[remote "origin"]
        url = https://github.com/jinxintang/gitTest.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "dev_zcz"]
        remote = .
        merge = refs/heads/origin/zcz
[branch "origin/zcz"]
        remote = .
        merge = refs/heads/dev_zcz

注:本項目的配置信息存放目錄:項目所在目錄/.git/config
看完這三種配置關(guān)聯(lián)分支的方法,想必大家已經(jīng)對“關(guān)聯(lián)分支”有了一定了解钦讳;

關(guān)聯(lián)分支:在git中表現(xiàn)為upstream,無論是使用push -u 或是 git branch --set-upstream-to方法矿瘦,均會將這種對應(yīng)關(guān)系寫入.git/config配置文件,如果一個本地分支沒有關(guān)聯(lián)分支愿卒,則無法執(zhí)行 git push 或 git pull指令匪凡;

沒有"關(guān)聯(lián)"分支的情況下,使用push會先讓你設(shè)置一個upstream branch.

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_no_upstream)
$ git branch -vv
* dev_no_upstream 3b7001a cm
  dev_zcz         3b7001a [origin/zcz] cm
  master          a09fdc4 [origin/master] create pull
  origin/zcz      3b7001a [dev_zcz] cm

zhangchangzhi@ZB-PF0SB6DQ MINGW64 /e/02.Workspace-test/gitTest (dev_no_upstream)
$ git push
fatal: The current branch dev_no_upstream has no upstream branch.
To push the current branch and set the remote as upstream, use

    git push --set-upstream origin dev_no_upstream

那么建立了一個關(guān)聯(lián)分支掘猿,是否就一定能使用git push呢病游?請閱讀<git 實踐(二)push的使用>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市稠通,隨后出現(xiàn)的幾起案子衬衬,更是在濱河造成了極大的恐慌,老刑警劉巖改橘,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件滋尉,死亡現(xiàn)場離奇詭異,居然都是意外死亡飞主,警方通過查閱死者的電腦和手機狮惜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來碌识,“玉大人碾篡,你說我怎么就攤上這事》げ停” “怎么了开泽?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長魁瞪。 經(jīng)常有香客問我穆律,道長,這世上最難降的妖魔是什么导俘? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任峦耘,我火速辦了婚禮,結(jié)果婚禮上旅薄,老公的妹妹穿的比我還像新娘辅髓。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布利朵。 她就那樣靜靜地躺著律想,像睡著了一般。 火紅的嫁衣襯著肌膚如雪绍弟。 梳的紋絲不亂的頭發(fā)上技即,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音樟遣,去河邊找鬼而叼。 笑死,一個胖子當(dāng)著我的面吹牛豹悬,可吹牛的內(nèi)容都是我干的葵陵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼瞻佛,長吁一口氣:“原來是場噩夢啊……” “哼脱篙!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伤柄,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤绊困,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后适刀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秤朗,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年笔喉,在試婚紗的時候發(fā)現(xiàn)自己被綠了取视。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡常挚,死狀恐怖作谭,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情待侵,我是刑警寧澤丢早,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站秧倾,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏傀缩。R本人自食惡果不足惜那先,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望赡艰。 院中可真熱鬧售淡,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至汤纸,卻和暖如春衩茸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贮泞。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工楞慈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人啃擦。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓囊蓝,卻偏偏與公主長得像,于是被迫代替她去往敵國和親令蛉。 傳聞我的和親對象是個殘疾皇子聚霜,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容

  • git 實踐(一) pull的使用git 實踐(二) push的使用git 實踐(三) 建立關(guān)聯(lián)分支 前言 工作中...
    皓皓amous閱讀 275評論 0 0
  • 目錄: git 實踐(一) pull的使用git 實踐(二) push的使用git 實踐(三) 建立關(guān)聯(lián)分支 前言...
    小志君閱讀 3,567評論 0 50
  • 刪除分支 $ git branch -d branchName 創(chuàng)建分支 $ git branch branchN...
    大繼閱讀 155評論 0 0
  • 簡介 Git 作為分布式版本控制系統(tǒng),基于去中心化的設(shè)計思想珠叔,在每個分布式節(jié)點上都保存有完整的版本蝎宇,降低了對中心倉...
    zhipingChen閱讀 554評論 0 3
  • git 使用筆記 git原理: 文件(blob)對象,樹(tree)對象运杭,提交(commit)對象 tree對象 ...
    神刀閱讀 3,759評論 0 10