Git 基礎 - 遠程倉庫的使用

遠程倉庫的使用

要參與任何一個 Git 項目的協作,必須要了解該如何管理遠程倉庫。遠程倉庫是指托管在網絡上的項目倉庫,可能會有好多個,其中有些你只能讀,另外有些可以寫。同他人協作開發某個項目時,需要管理這些遠程倉庫,以便推送或拉取數據,分享各自的工作進展。 管理遠程倉庫的工作,包括添加遠程庫,移除廢棄的遠程庫,管理各式遠程庫分支,定義是否跟蹤這些分支,等等。本節我們將詳細討論遠程庫的管理和使用。

?

查看當前的遠程庫

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

$ git clone git://github.com/schacon/ticgit.git
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 193.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
$ cd ticgit
$ git remote
origin

?

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

$ git remote -v
origin  git://github.com/schacon/ticgit.git (fetch)
origin  git://github.com/schacon/ticgit.git (push)

如果有多個遠程倉庫,此命令將全部列出。比如在我的 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 鏈接,所以也只有這個倉庫我能推送數據上去(我們會在第四章解釋原因)。

添加遠程倉庫

要添加一個新的遠程倉庫,可以指定一個簡單的名字,以便將來引用,運行?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

現在可以用字符串?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

現在,Paul 的主干分支(master)已經完全可以在本地訪問了,對應的名字是?pb/master,你可以將它合并到自己的某個分支,或者切換到這個分支,看看有些什么有趣的更新。

從遠程倉庫抓取數據

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

$ git fetch [remote-name]

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

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

如果設置了某個分支用于跟蹤某個遠端倉庫的分支(參見下節及第三章的內容),可以使用?git pull?命令自動抓取數據下來,然后將遠端分支自動合并到本地倉庫中當前分支。在日常工作中我們經常這么用,既快且好。實際上,默認情況下?git clone?命令本質上就是自動創建了本地的 master 分支用于跟蹤遠程倉庫中的 master 分支(假設遠程倉庫確實有 master 分支)。所以一般我們運行?git pull,目的都是要從原始克隆的遠端倉庫中抓取數據后,合并到工作目錄中的當前分支。

推送數據到遠程倉庫

項目進行到一個階段,要同別人分享目前的成果,可以將本地倉庫中的數據推送到遠程倉庫。實現這個任務的命令很簡單:?git push [remote-name] [branch-name]。如果要把本地的 master 分支推送到?origin?服務器上(再次說明下,克隆操作會自動使用默認的 master 和 origin 名字),可以運行下面的命令:

$ git push origin master

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

查看遠程倉庫信息

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

$ git remote show origin
* remote originURL: git://github.com/schacon/ticgit.gitRemote branch merged with 'git pull' while on branch mastermasterTracked remote branchesmasterticgit

除了對應的克隆地址外,它還給出了許多額外的信息。它友善地告訴你如果是在 master 分支,就可以用?git pull?命令抓取數據合并到本地。另外還列出了所有處于跟蹤狀態中的遠端分支。

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

$ git remote show origin
* remote originURL: git@github.com:defunkt/github.gitRemote branch merged with 'git pull' while on branch issuesissuesRemote branch merged with 'git pull' while on branch mastermasterNew remote branches (next fetch will store in remotes/origin)cachingStale tracking branches (use 'git remote prune')libwalkerwalker2Tracked remote branchesaclapiv2dashboard2issuesmasterpostgresLocal 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

注意,對遠程倉庫的重命名,也會使對應的分支名稱發生變化,原來的?pb/master?分支現在成了?paul/master

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

$ git remote rm paul
$ git remote
origin

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/392846.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/392846.shtml
英文地址,請注明出處:http://en.pswp.cn/news/392846.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

山東理工大學第七屆ACM校賽-G 飛花的傳送門

G - 飛花的傳送門飛花壕最近手頭比較寬裕,所以想買兩個傳送門來代步(夏天太熱,實在是懶得走路)。平面上有N個傳送門,飛花壕想要挑兩個距離最遠的傳送門帶回家(距離為歐幾里得距離,即兩點之間直線…

leetcode 1002. 查找常用字符

給定僅有小寫字母組成的字符串數組 A,返回列表中的每個字符串中都顯示的全部字符(包括重復字符)組成的列表。例如,如果一個字符在每個字符串中出現 3 次,但不是 4 次,則需要在最終答案中包含該字符 3 次。 …

git 代理 git_如何成為Git專家

git 代理 gitI made a mistake in my commit, how do I fix it ?我在提交中犯了一個錯誤,該如何解決? My commit history is a mess, how do I make it neater?我的提交歷史是一團糟,我如何使其更整潔? If you have ever had …

101與金根回顧敏捷個人:(13)敏捷個人和敏捷開發

本文更新版本已挪至 http://www.zhoujingen.cn/blog/1726.html ------------------------- 敏捷個人源于工作 自2001初成立了敏捷聯盟到現在10年的推廣,敏捷開發已日漸成為當前IT行業軟件開發的一種主流方法。沒有銀彈,任何方法都不可能解決所有問題&a…

計算機網絡選擇重傳,計算機網絡選擇重傳協議實驗報告..docx

計算機網絡選擇重傳協議實驗報告.《計算機網絡》選擇重傳協議實驗報告1.實驗內容和實驗環境描述實驗內容:利用所學數據鏈路層原理,設計一個滑動窗口協議,在仿真環境下編程實現有噪音信道環境下兩站點之間無差錯雙工通信。信道模型為8000bps 全…

leetcode 劍指 Offer 03. 數組中重復的數字

找出數組中重復的數字。 在一個長度為 n 的數組 nums 里的所有數字都在 0~n-1 的范圍內。數組中某些數字是重復的,但不知道有幾個數字重復了,也不知道每個數字重復了幾次。請找出數組中任意一個重復的數字。 示例 1: 輸入&…

【Maven學習】Maven打包生成包含所有依賴的jar包

http://blog.csdn.net/u013177446/article/details/54134583 ************************************************** maven打包生成的普通jar包,只包含該工程下源碼編譯結果,不包含依賴內容。同時,maven提供以下方式生成包含所有依賴的jar文件…

mysql 數據庫 安全_如何確保您MySQL數據庫安全

mysql 數據庫 安全我們開始之前的一些基本信息: (Some basic information before we get started:) Source: Center for Internet Security’s (CIS) Oracle MySQL Community Server 5.7來源: 互聯網安全中心(CIS)Oracle MySQL Community Server 5.7 Op…

Exchange server 2010系列教程之三 發送郵件測試

最近有些忙,好幾天沒有上來寫教程了,接著往下寫吧。就當是自己的學習筆記,呵呵,有不到之處,還請大家多多指教。 上一篇我們已經把服務器架設好了,那么我們來測試一下發送郵件。 1.首先在AD DC上面新建一個域…

如何用計算機掃描圖片變成文字,怎么掃描圖片上的文字-華為手機黑科技"文字掃描儀",3秒就能將紙質文檔轉成電子檔,牛...

現如今,手機已經成為我們使用率最高的電子設備之一了。手機雖小,但是功能可是五花八門,很多手機的功能,可能我們使用幾年,都沒有發現過。今天就給大家介紹華為手機中,非常強大的一項黑科技“文字掃描儀”。…

第一步:編輯器選擇

對于c/c的學習已經進一年的時間了,現在想開始好好換一個文本編輯器,然后慢慢的學習,隨著時間的增加而不斷增加。兩款頗有爭議的軟件是Vim和emacs,兩者之間的選擇其實對于初學者的我還是比較困難的,Vim在原來有點接觸過…

leetcode116. 填充每個節點的下一個右側節點指針(dfs)

代碼 /* // Definition for a Node. class Node {public int val;public Node left;public Node right;public Node next;public Node() {}public Node(int _val) {val _val;}public Node(int _val, Node _left, Node _right, Node _next) {val _val;left _left;right _ri…

react銷毀方法鉤子0_React鉤子:使用React狀態的新方法

react銷毀方法鉤子0Updated: With React 16.8, React Hooks are available in a stable release!更新:隨著React 16.8的發布, React Hooks已經發布! Outdated: Hooks are still an experimental proposal. They’re currently in React v16.…

Linux下安全審計工具 lynis 使用說明

官網:https://cisofy.com/download/lynis/ 下載解壓后,執行./lynis -Q即可,稍等片刻自動生成一份檢測報告。可以根據檢測報告看哪里不足進行改進即可。 本文轉自 lirulei90 51CTO博客,原文鏈接:http://blog.51cto.com/…

課堂訓練

1.對于可能的變更是否能制定應急計劃? 可以制定 例如一款app的開發,在制作app之前會對app的功能性進行一個規劃,想的比較全面就能很好應對變更。 2.員工是否能夠有效地處理意料之外的工作請求? 能夠處理 對于工作能力極強的員工而…

Google 實用搜索技巧

孔子曰:“工欲善其事,必先利其器。居是邦也,是其大夫之賢者,友其示支仁者。”——語出《論語衛靈公》 1. Google搜索固定格式的文檔 Google支持特定格式文檔的搜索(“filetype:”就是它的搜索語法)&#xf…

華科的計算機和建筑學哪個強,華中科技大學和華南理工大學相比,誰更占優勢?看了也許就知道了...

大學是學生接受教育的過程中非常重要的一個階段,很多學生都會盡可能在高考中,考出更好的成績,爭取報考一個更好的大學。為了提升教育水平,我國到目前為止建設了超過3000所大學,其中有很多高等院校非常相似,…

c#+handle.exe實現升級程序在運行時自動解除文件被占用的問題

我公司最近升級程序經常報出更新失敗問題,究其原因,原來是更新時,他們可能又打開了正在被更新的文件,導致更新文件時,文件被其它進程占用,無法正常更新而報錯,為了解決這個問題,我花…

播客#50:Sacha Greif

On todays episode of the freeCodeCamp Podcast, Quincy Larson interviews Sacha Greif, a designer, developer, and prolific open source project creator.在今天的免費CodeCamp播客中,昆西拉爾森(Quincy Larson)采訪了設計師,開發人員和多產的開源…

leetcode 977. 有序數組的平方(雙指針)

給定一個按非遞減順序排序的整數數組 A,返回每個數字的平方組成的新數組,要求也按非遞減順序排序。 示例 1: 輸入:[-4,-1,0,3,10] 輸出:[0,1,9,16,100] 示例 2: 輸入:[-7,-3,2,3,11] 輸出&am…