這是git詳解的第二篇,最近這個加班有點虛,因此文章也寫的比較懶了,一到加班不得已,保溫杯裏泡枸杞啊,不扯了,今天咱們來看看git的第二篇git
這篇內容主要是git的一些遠程命令github
遠程倉庫工具
git clonefetch
遠程分支網站
git fetch雲計算
關於遠程咱們要先理解一個概念,遠程倉庫spa
遠程倉庫並不複雜, 在現在的雲計算盛行的世界很容易把遠程倉庫想象成一個富有魔力的東西, 但實際上它們只是你的倉庫在另個一臺計算機上的拷貝。你能夠經過因特網與這臺計算機通訊 —— 也就是增長或是獲取提交記錄3d
話雖如此, 遠程倉庫卻有一系列強大的特性code
首先也是最重要的的點, 遠程倉庫是一個強大的備份。本地倉庫也有恢復文件到指定版本的能力, 但全部的信息都是保存在本地的。有了遠程倉庫之後,即便丟失了本地全部數據, 你仍能夠經過遠程倉庫拿回你丟失的數據。blog
還有就是, 遠程讓代碼社交化了! 既然你的項目被託管到別的地方了, 你的朋友能夠更容易地爲你的項目作貢獻(或者拉取最新的變動)
如今用網站來對遠程倉庫進行可視化操做變得愈加流行了(像 Github 或 Phabricator), 但遠程倉庫永遠是這些工具的頂樑柱, 所以理解其概念很是的重要!
git clone
遠程操做的第一個命令,即配置使用遠程倉庫環境的命令,git clone
命令做用是在本地建立一個遠程倉庫的拷貝
執行git clone 後
OK,如今咱們有了一個本身項目的遠程倉庫
既然如今有了遠程倉庫,如今咱們來進行下一步,這個時候咱們又要談一個概念了
既然你已經看過 git clone
命令了,我們深刻地看一下發生了什麼。
你可能注意到的第一個事就是在咱們的本地倉庫多了一個名爲 o/master
的分支, 這種類型的分支就叫遠程分支。因爲遠程分支的特性致使其擁有一些特殊屬性。
遠程分支反映了遠程倉庫(在你上次和它通訊時)的狀態。這會有助於你理解本地的工做與公共工做的差異 —— 這是你與別人分享工做成果前相當重要的一步.
遠程分支有一個特別的屬性,在你檢出時自動進入分離 HEAD 狀態。Git 這麼作是出於不能直接在這些分支上進行操做的緣由, 你必須在別的地方完成你的工做, (更新了遠程分支以後)再用遠程分享你的工做成果。
關於第一步驟操做你可能還有一個疑問
o/
?你可能想問這些遠程分支的前面的 o/
是什麼意思呢?好吧, 遠程分支有一個命名規範 —— 它們的格式是:
<remote name>/<branch name>
所以,若是你看到一個名爲 o/master
的分支,那麼這個分支就叫 master
,遠程倉庫的名稱就是 o
。
大多數的開發人員會將它們主要的遠程倉庫命名爲 origin
,並非 o
。這是由於當你用 git clone
某個倉庫時,Git 已經幫你把遠程倉庫的名稱設置爲 origin
了
不過 origin
對於咱們的 UI 來講太長了,所以不得不使用簡寫 o
:) 可是要記住, 當你使用真正的 Git 時, 你的遠程倉庫默認爲 origin
!
若是檢出遠程分支會怎麼樣呢?
執行命令 git checkout o/master
git commit
正如你所見,Git 變成了分離 HEAD 狀態,當添加新的提交時 o/master
也不會更新。這是由於 o/master
只有在遠程倉庫中相應的分支更新了之後纔會更新。
Git 遠程倉庫至關的操做實際能夠概括爲兩點:向遠程倉庫傳輸數據以及從遠程倉庫獲取數據。既然咱們能與遠程倉庫同步,那麼就能夠分享任何能被 Git 管理的更新(所以能夠分享代碼、文件、想法、情書等等)。
如今咱們來看看如何從遠程倉庫獲取數據 —— 命令如其名,它就是 git fetch
。
你會看到當咱們從遠程倉庫獲取數據時, 遠程分支也會更新以反映最新的遠程倉庫。
在解釋 git fetch
前,咱們先看看實例。這裏咱們有一個遠程倉庫, 它有兩個咱們本地倉庫中沒有的提交。
執行 git fetch
就是這樣了! C2
,C3
被下載到了本地倉庫,同時遠程分支 o/master
也被更新,反映到了這一變化
注意:
git fetch
並不會改變你本地倉庫的狀態。它不會更新你的 master
分支,也不會修改你磁盤上的文件。
理解這一點很重要,由於許多開發人員誤覺得執行了 git fetch
之後,他們本地倉庫就與遠程倉庫同步了。它可能已經將進行這一操做所需的全部數據都下載了下來,可是並無修改你本地的文件
因此, 你能夠將 git fetch
的理解爲單純的下載操做