二 克隆Git倉庫
1.1 從遠程倉庫中克隆整個代碼倉庫
mkdir Demo //在當前路徑下新建一個文件夾,用來存放將要拉取的整個代碼庫
cd Demo //進入這個文件夾
repo init -u ssh://igerrit.storm:29418/Demo/manifest -b master
//-u :指定一個URL,其連接到一個manifest倉庫
//-m:在manifest倉庫中選擇一個xml文件
//manifest:manifest是遠程倉庫里的一份清單,init的時候就是按照這份清單從服務器進行同步的
//ssh://igerrit.storm:29418/Demo/ :是一個遠程服務器的地址,地址可以是私人的也可以是共有的,共有的表示代碼是公開的
//-b:表示后接分支名,可以是master,也可以是其他分支
repo sync //這是一個封裝的命令,用來同步代碼。 上一步應該用時比較少,這一步用時較長
repo start master --all //這也是一個封裝的命令,用來切分支的。這一步不可缺少 ,意為將拉下來的版本庫都切換到master分支,如果不做這一步,克隆下來的所有倉庫默認是no branch狀態,容易導致后面工作時添加的代碼丟失
1.2 克隆單個倉庫
git clone https://github.com/××× 從遠程庫中克隆,克隆一個版本庫到新的目錄,可以在當前目錄新建一個文件夾,也可以git clone [地址] [本地目錄]
git clone ssh://igerrit.storm:29418/tools/repo.git // 同上,
之后 git pull origin master //origin是遠程主機,master是默認分支
要克隆一個倉庫,首先必須知道倉庫的地址,然后使用git clone
命令克隆。
Git支持多種協議,包括https
,但通過ssh
支持的原生git
協議速度最快
單一倉庫的更新可以使用git pull命令。
repo init完成的操作如下:
(1):完成repo 工具的完整下載,執行的repo腳本只是引導程序
(2):克隆清單庫manifest.git(地址來自於-u參數)
(3):克隆的清單庫位於manifest.git中,克隆到本地.repo/manifests.清單,.repo/manifest.xml只是符號鏈接,它指向.repo/manifests/default.xml文件,
repo sync:用於參照清單文件.repo/manifest.xml克隆並同步版本庫。如果某個版本庫尚不存在,則執行repo sync命令相當於執行git clone。如果項目版本庫已經存在,則相當於執行下面的兩條指令:
(1):git remote update //相當於對每一個remote源執行了fetch操作
(2):git rebase origin/branch //針對當前分支的跟蹤分支執行rebase操作
repo start:創建並切換分支,是對git checkout -b命令的封裝 //如果存在分支則切換分支,若不存在則創建並切換
區別是repo start 是在清單文件設定分支的基礎上創建特性分支,git checkout是在當前所在分支的基礎上創建特性分支,如果是針對於整個版本庫,那么相當於 repo forall -c git checkout -b
題外:在使用這些命令克隆倉庫之前,我們是需要配置一些環境,如ssh的key,用戶名,郵箱名等等
如果公司使用的是私有github,在初始化倉庫之前需要若是初始化倉庫的時候出現提示倉庫已經初始化,那么可以嘗試刪除本地的.repo