Git Remotes

2021-06-04

本地端的 git 有能力可以回復文件到前一個狀態 (你知道的),但是全部的資訊還是儲存在本地端。如果你在其它的電腦上面有你的 git repository 的副本,則你可以在資料不小心遺失的時候進行救援備份。 更重要的是, remote 讓大家一起來 coding!現在你的 project 放在 remote 上面,你的朋友可以很容易地對你的 project 做出貢獻(或者是 pull 你最後的修改) 。

我們現在想要學習針對 remote 的指令,我們需要一個指令去建立環境,git clone 就是我們需要的指令。技術上來說, git clone 表示你想要把遠端的 repository 複製一份下來放在本地端( 例如從 github 複製)。

你首先看到的是在你的本地端(local repository)出現了一個新的 branch 叫作 o/main,這種型態的 branch 叫作 remote branch (遠端分支),因為特殊的需求,因此 remote branch 有特殊的性質。

 remote branch 反應了 remote repository 的狀態(因為你最後接觸的是這些 remote repository),最重要的是,在你想要分享你的 commit 給其他人時,你必須知道你現在的 commit 跟 remote repository 有哪些不同,而 remote branch 的狀態就是在告訴你這些資訊。

remote branch 有特別的特性,當你移動到 remote branch 時,你就進入到分離 HEAD 的狀態,git 這樣做的原因是告訴你不能夠直接影響這些 branch。你必須要在其它的 branch 工作,並且分享到 remote (分享之後,你的 remote branch 就會被更新)。 

什麼是 o/?

你也許會對於 remote branch 前面的 o/ 感到困惑,喔!remote branch 也(需要) 一個命名法則,或者是一般表示 remote branch 的格式。

  • <remote 名稱>/<branch 名稱>

因此,當你看到一個 branch 叫做 o/main,就表示這個 branch 叫做 main,而且這個 remote 的名稱叫作 o。

 很多程式設計師實際上會把他們的 remote 命名為 origin,而不是 o,這在 git 是很常見的事情,因為當你使用 git clone 時,git 會自動把你的 remote 命名為 origin。

git fetch

透過 git remote 其實就是把資料接收或傳送到其它的 repository,只要我們可以將資料傳進及傳出,我們就可以分享任何被 git 所追蹤的 repository 的更新(例如分享工作進度,新的檔案,新的想法,以及情書等等...)。 

那如何從 remote repository 來 fetch (抓取)資料? 這個指令叫作 git fetch。 

看以下的例子:
在這裡我們有一個新增了兩個 commit 的 remote repository, 而且我們的 local repository 並沒有包含這兩個 commit。

輸入指令:

git fetch

commit C2 以及 C3 已經被下載到我們的 local repository,而且我們的 remote branch o/main 也更新了。

 git fetch 只有執行了兩個主要步驟,包含:

  • 下載 remote 有的 commit,但是在我們的 local repository 是沒有該 commit。
  • 更新我們 remote branch 所指向的地方(例如, o/main)

然而,git fetch 並不會影響到在你的 local repository 中的 main branch,他並不會將你的 main branch 更新到最新的狀態。

這個觀念很重要,因為很多程式設計師以為 git fetch 可以讓他們在 local repository 上面的工作跟 remote repository 的工作可以同步。它是會下載同步所需的資料,但是不會更新任何的檔案,我們會在後面的教學中提到如何做到這件事情。:D

因此,你可以把 git fetch 想成是在下載資料。

Miller : hhjoy222@gmail.com
Webnode 提供技術支援
免費建立您的網站! 此網站是在 Webnode 上建立的。今天開始免費建立您的個人網站 立即開始