5. 克隆服務器上的項目
首先,返回主界面,點擊File => Clone Repo,選擇 Clone with URL,如下圖:
圖 5‑1 SSH方式克隆倉庫界面
1) SSH 方式連接倉庫
SSH 方式的Clone步驟:
- 點擊
右側的
按鈕,打開文檔對話框,選擇存放代碼的本地目錄;
- 填寫服務器URL路徑(倉庫)以 服務器上的路徑 /src/Test.git 為例,通過SSH方式連接到服務器上的倉庫。
- URL填寫 ssh://git@192.168.0.155/src/Test.git,將會以SSH方式連接服務器並克隆 Test倉庫,代碼存放在本地的 G:\18up\test 目錄中。程序會自動為你創建一個子目錄
- 點擊綠色按鈕
,克隆完成后在程序頂部會出現一些提示,如下圖:
圖 5‑2 完成倉庫克隆
點擊 Open Now 就會打開剛剛克隆到本地的倉庫,點擊OK則會確認該提示,但不執行操作。
2) 在服務器中查找鏈接
如果不知道服務器中倉庫的位置,在瀏覽器中填寫 192.168.0.155 並跳轉。會出現以下界面:
圖 5‑3 網頁上的倉庫信息
找到想要clone的倉庫,復制對應行的最右側的 Git 鏈接,並將該鏈接粘貼入程序的 URL 文本框中即可。
3) SCP 方式連接倉庫
SCP 和 SSH 兩種方式的差別在於填寫的URL不同(即第2步開始,步驟會有所不同),如下圖:
圖 5‑4 SCP方式克隆倉庫
填寫的URL為 192.168.0.155:/src/Test.git,與SSh方式有所不同。
按照第3步的步驟,點擊Clone按鈕,在程序頂部即會出現一些提示如圖 5‑5,點擊 即可下載服務器上倉庫的代碼。
若頂部出現后續選項,連續點擊相應的綠色按鈕(如:Open, Initialize等)
圖 5‑5 用給定的用戶名連接服務器
這里我們使用默認的git用戶即可。
克隆好服務器上的倉庫后,你還不能立即使用它來進行版本控制,有幾個重要的地方需要修改:
鼠標移動到REMOTE樹狀圖下方的origin處,如圖 5‑6,
右鍵點擊該欄(或者點擊右側的下拉菜單欄按鈕),會出現如圖 5‑7示的下拉菜單:
圖 5‑6 鼠標移至遠程origin分支
圖 5‑7 點擊下拉菜單按鈕
使用SCP方式進行連接時需要注意:GitKraken程序(version3.5.0)有個bug,我們需要手動修正它。點擊Edit origin 可以看到類似圖 5‑8的界面:
圖 5‑8 編輯遠程分支URL
如果編輯框內的 155: 和 src 之間缺少斜杠的話,我們就需要在“155:”后面添加一個斜杠“/”(若程序沒有這個bug就可以跳過這一步),否則在Push和Pull時就會出現找不到遠程倉庫的錯誤。
4) 完成倉庫的克隆
當添加遠程倉庫並且成功拉取(pull)操作后,可以看到如圖 5‑9的程序界面:
圖 5‑9 成功pull遠程倉庫后的界面
【附】
注:若直接使用 Gitweb 搭建 Git 服務器,那么默認的倉庫列表是這樣的:
並沒有最后一列的 “Git 鏈接”,這一列是用 JavaScript 代碼生成的,這里貼出用的 JS 代碼(未使用 JQuery)
1 function gitLink() { 2 var createTable = function(params) { 3 // header 4 var t = document.createElement( params.type ); 5 var tc = document.createElement( params.childType ); 6 tc.setAttribute( "class", params.class ); 7 tc.setAttribute( "id", params.childId ); 8 9 tc.innerHTML= params.text || ""; 10 t.appendChild( tc ); 11 return t; 12 } 13 14 15 var tables = document.getElementsByTagName("table"); 16 var table = tables[0]; 17 var tableRows = tables[0].children; 18 19 var h1 = createTable( { type:"th", 20 text: "Git 鏈接", 21 class: "header", 22 childType: "a", 23 childId: "headerLink" 24 } ); 25 26 tableRows[0].appendChild( h1 ); 27 28 for( var i = 1; i < tableRows.length; i++ ) { 29 // console.log( tableRows[i] ); 30 var project = tableRows[i].children[0].children[0].innerHTML; 31 var linkName = "ssh://git@" + location.hostname + "/src/" + project; 32 var r = createTable( { type: "td", 33 text: linkName, 34 class: "list", 35 childType: "a", 36 childId: "gitlink"+i 37 } ); 38 tableRows[i].appendChild( r ); 39 } 40 } 41 42 document.onreadystatechange = function() { 43 if( document.readyState == "complete" ) { 44 gitLink(); 45 } 46 }
將代碼保存成 js 文件(假設保存名為 gitlink.js),放在 gitweb 目錄下的 static 目錄下面。
以本服務器為例,gitlink.js 將被放在 /var/www/gitweb/static 目錄下
然后打開 gitweb 中的 gitweb.cgi 文件,搜索 javascript
如圖, 120 行和 4257 行的代碼是手動修改的,目的是為了在生成的 HTML 頁面中引用 gitlink.js 文件。
然后打開瀏覽器,就能看到以下的內容:
如果不知道如何搭建 git 服務器,可以參考這篇文章 lighttpd 與 gitweb 搭建服務器。