前幾天我們學會了建立 Branch和合併修改,昨天也實際解決了 Merge Conflict
但我突然想到如果今天換了一台電腦,想繼續修改GitHub上的專案或是跟同學一起開發時對方已經更新了程式碼,那我要怎麼取得最新版本呢?
所以今天我們就要來認識三個常用的 Git 指令:git clone、git fetch 和 git pull,看看它們有什麼差別以及如何同步 GitHub 上的專案!
如果今天我在學校電腦完成了一部分的專案也已經將程式碼上傳到 GitHub,但是回家後想繼續開發,家裡的電腦卻沒有這份專案這時候該怎麼辦呢?
這時候就可以使用 git clone了。
git clone <Repository網址>
git clone只要取得 GitHub Repository 的網址就可以將遠端 Repository 複製一份到本機,除了專案檔案之外也會取得 Git 的 Commit歷史紀錄及分支資訊,並預設建立名為origin 的遠端連線。
那如果今天我跟同學一起開發專案,同學告訴我他已經將修改好的程式碼Push到 GitHub,但是我還在修改自己的部分,又想先確認同學更新了哪些內容可是不想直接影響目前的程式碼這時候該怎麼辦呢?
這時候就可以使用git fetch了。
git fetch origin
git fetch 可以從遠端 Repository 取得最新的Commit和Branch 資訊,然後更新本機的遠端追蹤分支,但不會直接將這些修改合併到目前的 Branch。所以我們可以先透過 git fetch 取得遠端更新,再決定要不要將這些修改整合進自己的專案。
那如果我已經完成自己的修改,現在想把同學最新上傳到 GitHub 的程式碼同步到自己的專案,可以使用什麼呢?
這時候就可以使用git pull 了。
git pull origin master
origin 是遠端 Repository,master是要取得更新的遠端分支。
git pull是先取得遠端 Repository 的最新修改,再將這些修改整合到目前所在的 Branch裡面。
但git pull也會遇到兩邊的修改發生衝突的情況,就會遇到昨天學到的 Merge Conflict需要我們自己去手動解決。
然後我還整理了一個比較表,讓我們可以更清楚地了解這三個指令的功能及使用時機:
| 指令 | 主要功能 | 會直接整合到目前分支嗎? | 使用時機 |
|---|---|---|---|
git clone |
將遠端 Repository 複製到本機 | 不適用,會建立新的本機 Repository | 第一次下載專案、換電腦開發 |
git fetch |
取得遠端最新的 Commit 和 Branch 資訊 | 不會 | 想先查看遠端有哪些更新 |
git pull |
取得遠端更新並整合到目前分支 | 會嘗試整合 | 想將本機專案同步到最新版本 |
那麼今天我們先認識到這邊明天再來實作吧!