遠程倉庫的使用

遠程倉庫的使用

要參與任何一個 Git 項目的協(xié)作,必須要了解該如何管理遠程倉庫恶导。遠程倉庫是指托管在網(wǎng)絡上的項目倉庫崭篡,可能會有好多個挪哄,其中有些你只能讀,另外有些可以寫媚送。同他人協(xié)作開發(fā)某個項目時中燥,需要管理這些遠程倉庫寇甸,以便推送或拉取數(shù)據(jù)塘偎,分享各自的工作進展疗涉。管理遠程倉庫的工作,包括添加遠程庫吟秩,移除廢棄的遠程庫咱扣,管理各式遠程庫分支,定義是否跟蹤這些分支涵防,等等闹伪。本節(jié)我們將詳細討論遠程庫的管理和使用。

查看當前的遠程庫

要查看當前配置有哪些遠程倉庫壮池,可以用 git remote 命令偏瓤,它會列出每個遠程庫的簡短名字。在克隆完某個項目后椰憋,至少可以看到一個名為 origin 的遠程庫厅克,Git 默認使用這個名字來標識你所克隆的原始倉庫:

$ git clone git://github.com/schacon/ticgit.git
Initialized empty Git repository in /private/tmp/ticgit/.git/
remote: Counting objects: 595, done.
remote: Compressing objects: 100% (269/269), done.
remote: Total 595 (delta 255), reused 589 (delta 253)
Receiving objects: 100% (595/595), 73.31 KiB | 1 KiB/s, done.
Resolving deltas: 100% (255/255), done.
$ cd ticgit
$ git remote
origin

也可以加上 -v 選項(譯注::此為 –verbose 的簡寫,取首字母)橙依,顯示對應的克隆地址:

$ git remote -v
origin  git://github.com/schacon/ticgit.git

如果有多個遠程倉庫证舟,此命令將全部列出。比如在我的 Grit 項目中窗骑,可以看到:

$ cd grit
$ git remote -v
bakkdoor  git://github.com/bakkdoor/grit.git
cho45     git://github.com/cho45/grit.git
defunkt   git://github.com/defunkt/grit.git
koke      git://github.com/koke/grit.git
origin    git@github.com:mojombo/grit.git

這樣一來女责,我就可以非常輕松地從這些用戶的倉庫中,拉取他們的提交到本地创译。請注意抵知,上面列出的地址只有 origin 用的是 SSH URL 鏈接,所以也只有這個倉庫我能推送數(shù)據(jù)上去(我們會在第四章解釋原因)软族。

添加遠程倉庫

要添加一個新的遠程倉庫辛藻,可以指定一個簡單的名字,以便將來引用互订,運行 git remote add [shortname] [url]:

$ git remote
origin
$ git remote add pb git://github.com/paulboone/ticgit.git
$ git remote -v
origin  git://github.com/schacon/ticgit.git
pb  git://github.com/paulboone/ticgit.git

現(xiàn)在可以用字串 pb 指代對應的倉庫地址了吱肌。比如說,要抓取所有 Paul 有的仰禽,但本地倉庫沒有的信息氮墨,可以運行 git fetch pb:

$ git fetch pb
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/paulboone/ticgit
 * [new branch]      master     -> pb/master
 * [new branch]      ticgit     -> pb/ticgit

現(xiàn)在,Paul 的主干分支(master)已經(jīng)完全可以在本地訪問了吐葵,對應的名字是 pb/master规揪,你可以將它合并到自己的某個分支,或者切換到這個分支温峭,看看有些什么有趣的更新猛铅。

從遠程倉庫抓取數(shù)據(jù)

正如之前所看到的,可以用下面的命令從遠程倉庫抓取數(shù)據(jù)到本地:

$ git fetch [remote-name]

此命令會到遠程倉庫中拉取所有你本地倉庫中還沒有的數(shù)據(jù)凤藏。運行完成后奸忽,你就可以在本地訪問該遠程倉庫中的所有分支堕伪,將其中某個分支合并到本地,或者只是取出某個分支栗菜,一探究竟欠雌。(我們會在第三章詳細討論關于分支的概念和操作。)

如果是克隆了一個倉庫疙筹,此命令會自動將遠程倉庫歸于 origin 名下富俄。所以,git fetch origin 會抓取從你上次克隆以來別人上傳到此遠程倉庫中的所有更新(或是上次 fetch 以來別人提交的更新)而咆。有一點很重要霍比,需要記住,fetch 命令只是將遠端的數(shù)據(jù)拉到本地倉庫暴备,并不自動合并到當前工作分支桂塞,只有當你確實準備好了,才能手工合并馍驯。

如果設置了某個分支用于跟蹤某個遠端倉庫的分支(參見下節(jié)及第三章的內(nèi)容)阁危,可以使用 git pull 命令自動抓取數(shù)據(jù)下來,然后將遠端分支自動合并到本地倉庫中當前分支汰瘫。在日常工作中我們經(jīng)常這么用狂打,既快且好。實際上混弥,默認情況下 git clone 命令本質(zhì)上就是自動創(chuàng)建了本地的 master 分支用于跟蹤遠程倉庫中的 master 分支(假設遠程倉庫確實有 master 分支)趴乡。所以一般我們運行 git pull,目的都是要從原始克隆的遠端倉庫中抓取數(shù)據(jù)后蝗拿,合并到工作目錄中的當前分支晾捏。

推送數(shù)據(jù)到遠程倉庫

項目進行到一個階段,要同別人分享目前的成果哀托,可以將本地倉庫中的數(shù)據(jù)推送到遠程倉庫惦辛。
實現(xiàn)這個任務的命令很簡單::

git push [remote-name] [branch-name]。

如果要把本地的 master 分支推送到 origin 服務器上(再次說明下仓手,克隆操作會自動使用默認的 master 和 origin 名字)胖齐,可以運行下面的命令:

$ git push origin master

只有在所克隆的服務器上有寫權限,或者同一時刻沒有其他人在推數(shù)據(jù)嗽冒,這條命令才會如期完成任務呀伙。如果在你推數(shù)據(jù)前,已經(jīng)有其他人推送了若干更新添坊,那你的推送操作就會被駁回剿另。你必須先把他們的更新抓取到本地,合并到自己的項目中,然后才可以再次推送雨女。有關推送數(shù)據(jù)到遠程倉庫的詳細內(nèi)容見第三章谚攒。

查看遠程倉庫信息

我們可以通過命令 git remote show [remote-name] 查看某個遠程倉庫的詳細信息,比如要看所克隆的 origin 倉庫戚篙,可以運行:

$ git remote show origin
* remote origin
  URL: git://github.com/schacon/ticgit.git
  Remote branch merged with 'git pull' while on branch master
    master
  Tracked remote branches
    master
    ticgit

除了對應的克隆地址外五鲫,它還給出了許多額外的信息溺职。它友善地告訴你如果是在 master 分支岔擂,就可以用 git pull 命令抓取數(shù)據(jù)合并到本地。另外還列出了所有處于跟蹤狀態(tài)中的遠端分支浪耘。

上面的例子非常簡單乱灵,而隨著使用 Git 的深入,git remote show 給出的信息可能會像這樣:

$ git remote show origin
* remote origin
  URL: git@github.com:defunkt/github.git
  Remote branch merged with 'git pull' while on branch issues
    issues
  Remote branch merged with 'git pull' while on branch master
    master
  New remote branches (next fetch will store in remotes/origin)
    caching
  Stale tracking branches (use 'git remote prune')
    libwalker
    walker2
  Tracked remote branches
    acl
    apiv2
    dashboard2
    issues
    master
    postgres
  Local branch pushed with 'git push'
    master:master

它告訴我們七冲,運行 git push 時缺省推送的分支是什么(譯注::最后兩行)痛倚。它還顯示了有哪些遠端分支還沒有同步到本地(譯注::第六行的 caching 分支),哪些已同步到本地的遠端分支在遠端服務器上已被刪除(譯注::Stale tracking branches 下面的兩個分支)澜躺,以及運行 git pull 時將自動合并哪些分支(譯注::前四行中列出的 issues 和 master 分支)蝉稳。

遠程倉庫的刪除和重命名

在新版 Git 中可以用 git remote rename 命令修改某個遠程倉庫在本地的簡短名稱,比如想把 pb 改成 paul掘鄙,可以這么運行:

$ git remote rename pb paul
$ git remote
origin
paul

注意耘戚,對遠程倉庫的重命名,也會使對應的分支名稱發(fā)生變化操漠,原來的 pb/master 分支現(xiàn)在成了 paul/master收津。

碰到遠端倉庫服務器遷移,或者原來的克隆鏡像不再使用浊伙,又或者某個參與者不再貢獻代碼撞秋,那么需要移除對應的遠端倉庫,可以運行 git remote rm 命令:

$ git remote rm paul
$ git remote
origin
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嚣鄙,一起剝皮案震驚了整個濱河市吻贿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌哑子,老刑警劉巖廓八,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異赵抢,居然都是意外死亡剧蹂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門烦却,熙熙樓的掌柜王于貴愁眉苦臉地迎上來宠叼,“玉大人,你說我怎么就攤上這事∶岸” “怎么了伸蚯?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長简烤。 經(jīng)常有香客問我剂邮,道長,這世上最難降的妖魔是什么横侦? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任挥萌,我火速辦了婚禮,結果婚禮上枉侧,老公的妹妹穿的比我還像新娘引瀑。我一直安慰自己,他們只是感情好榨馁,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布憨栽。 她就那樣靜靜地躺著,像睡著了一般翼虫。 火紅的嫁衣襯著肌膚如雪屑柔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天珍剑,我揣著相機與錄音掸宛,去河邊找鬼。 笑死次慢,一個胖子當著我的面吹牛旁涤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播迫像,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劈愚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了闻妓?” 一聲冷哼從身側響起菌羽,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎由缆,沒想到半個月后注祖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡均唉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年是晨,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片舔箭。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡罩缴,死狀恐怖蚊逢,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情箫章,我是刑警寧澤烙荷,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站檬寂,受9級特大地震影響终抽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜桶至,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一昼伴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧塞茅,春花似錦亩码、人聲如沸季率。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽飒泻。三九已至鞭光,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泞遗,已是汗流浹背惰许。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留史辙,地道東北人汹买。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像聊倔,于是被迫代替她去往敵國和親晦毙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

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