iT邦幫忙

0

Git-git clone 的各種方式

git
WM 2019-05-14 16:14:25740 瀏覽

指令git clone可以下載遠端儲存庫至本地端。

angular的GitHub為範例。

進入頁面後,在右方的綠色按鈕選擇下載。
https://ithelp.ithome.com.tw/upload/images/20190514/201125736Xro53upf3.png
採用HTTPS通訊協定下載。

將儲存庫下載至repo資料夾。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573aFivfLjD7k.png
clone完成後,本地端的內容和遠端儲存庫的內容會一模一樣。

分析git clone的步驟

我們來看看clone的過程,做了哪些事。

Cloning into 'angular'...
clone時,並未指定資料夾名稱,所以預設會使用儲存庫的名稱。

remote: Enumerating objects: 236957, done.
統計總共有幾個物件要clone。

Receiving objects: 100% (236957/236957), 109.25 MiB | 4.79 MiB/s, done.
即時觀察clone的物件數,資料的大小,網路速度。

Checking out files: 100% (7341/7341), done.
最後,會做checkout的動作,結束這次clone。

https://ithelp.ithome.com.tw/upload/images/20190514/20112573eNfZIdpHQD.png
clone完成後,進入angular,會直接checkout至master分支。

其他git clone的方式

這次加上兩個參數。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573b4pItpvpCs.png
angular2:指定資料夾名稱。
--no-checkout:不執行checkout。

進入資料夾,會發現,只有一個git版控的資料夾,其他都沒有。
這是因為,沒有執行checkout的關係。

進入資料夾。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573GwHi7uQVVm.png
預設一樣進入master分支,但因為稍早沒有checkout,所以在這邊執行checkout。

顯示的訊息:

Checking out files: 100% (7341/7341), done.
會顯示checkout的訊息。

Already on 'master'
目前正在master分支。

Your branch is up to date with 'origin/master'.
目前分支的狀態,跟遠端儲存庫的origin/master分支一樣。

執行完成後,專案的所有檔案就會顯示。

什麼情況會使用到--no-checkout 命令?
當clone的專案非常大,我們不希望先checkout至master分支的時候。

更多git clone的用法

輸入git clone --help,會自動跳出一個網頁git-clone(1) Manual Page

來看看GIT URLS部分。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573B190QWQFdF.png
git通訊協定:傳輸速度最快,但沒有加密,目前已移除。
http[s]通訊協定:就是我們剛剛使用的。

本地儲存庫

在clone指令,多加上--bare參數。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573tOfejluFlz.png

資料夾名稱有所不同,多了一個.git。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573cMnd5qjdG6.png

進入資料夾內部查看,會發現,跟剛剛所clone的專案,內部的git版控資料夾,它們的內容幾乎一樣。

angular2/.git
https://ithelp.ithome.com.tw/upload/images/20190514/20112573Z0h96F2MvB.png

angular.git
https://ithelp.ithome.com.tw/upload/images/20190514/201125736egZLAz3SW.png

我們所clone的,是遠端儲存庫的版控資訊,並沒有資料本身。

為什麼要這樣做?
我們可以將它當作本地的共用儲存庫。

這次把它當作遠端儲存庫,執行clone。
https://ithelp.ithome.com.tw/upload/images/20190514/20112573xL9CI9SJmI.png
馬上完成,因為我們是直接在本地端執行。

clone的angular3資料夾,是一個完整的專案。


尚未有邦友留言

立即登入留言