Synology Git Server + TortoiseGit Client

  因為工作上個人的需要,針對程式碼還是得弄個版本控管,要不然開發新功能時如果發生意外,想要退回之前的版本就很頭大了。原本想說應該很簡單(但實際上真的不難),上個週末在家在Synology主機上嘗試安裝Git Server或是GitLab,弄了兩天還是搞得一塌糊塗。安裝GitLab還需要另外安裝Docker,整個跑起來蠻吃系統資源的,再加上一下跟WordPress的Tomcat port相衝,一下web無法連接,所以就放棄他了(要不然它有web管理介面似乎蠻方便的);Git Server則是在還沒弄清楚的時候就瞎試,也是白白浪費了一整天。

  結果今天意外上班時試了一下,居然順利OK了,看來做事還是要心平氣和、按部就班(可能是手遊打太多,跟看到怪一樣,想要一打就死,沒打死就整個很急躁)。簡單記錄一下,今天實做的步驟。


【Server端】

在Server端基本上要做幾件事:

  1. 在Synology上安裝「Git Server」套件。
  2. 建立一個Git Repository的目錄,並將要建立的專案目錄建立在這個目錄下。
  3. 在電腦上,透過ssh登入Synology主機(需在「終端機&SNMP」裡開啟SSH登入功能)。進入該專案目錄下後,初始化這個專案的git repo。

#Server Step1. 在Synology上安裝「Git Server」套件。

#Server Step2. 這個步驟主要是要建立存放Git的位置

  1. 先在「共用資料夾」裡新增一個Git Repository的目錄,假設我們取名「git-repo」
  2. 再在這個目錄下建立專案的目錄,假設我們現在要建立的專案名稱是「TEST_PROJECT」
  3. 資料夾建立後,要記得修改權限。看你之後要用哪一個使用者登入,該使用者要有這個資料夾的讀寫權限。

#Server Step3. 在PC上透過SSH登入Synology主機,並cd到該專案的資料夾下,輸入

「git –bare init」

這樣,Server端的專案目錄就算建立完成了


【Client端】

  Client端我是使用TortoiseGit,有需要的人可以在右邊下載 → https://tortoisegit.org/

  另外,也需要安裝GitHub Desktop version(TortoiseGit會使用一些Git的指令),右邊可以下載 → https://desktop.github.com/

  Client端的動作大概可以分為兩種(以下簡稱為A情境與B情境),一個(A)是你第一次要初始化的上傳(上傳最原始的程式碼版本),一種(B)是Server上已經有程式碼版本,你要直接抓取最新的版本下來。

  如果是A情境的話,要做的步驟有:

  1. 在已經有程式碼的資料夾建立Git版本庫
  2. 提交這個Git版本庫

#Client A-Step1.1 在已經有程式碼的資料夾上,點選右鍵,選擇「Git在此建立版本庫」。

#Cleint A-Step1.2 跳出的對話窗,不要勾選「設為純版本庫」。(純版本庫就是存放各版本狀態的資料庫,在我們的情境下,純版本庫是建立在Synology上的)

#Cleint A-Step2.1 再右鍵點選在專案的程式碼資料夾上,選擇「Git 提交(C) -> “master”…」

#Client A-Step2.2 在上面圈圈那邊填入一些說明;中間圈圈則是選取哪些檔案要新增進去,如果是全部要新增的話,可以點選粗體字的「全部(A)」;最後再點選下面圈圈裡的「提交 & 推送」。

#Client A-Step2.3 檔案要如何推送到遠端呢?就是點選上面「目的目錄」–>「遠端」裡的這個「管理(G)」

#Client A-Step2.4 URL這邊好像支援四、五種Protocol的語法,這邊就用SSH的語法來測試。SSH的語法格式如下:

ssh://username@ip:port/路徑

username:登入synology時的帳號

ip:ip位址,也可以是domain name

port:看你在你的Synology「終端機與SNMP」頁面的port設定是什麼

路徑:該git repo的完整路徑

我們就以剛剛server建立的範例,完整的URL就是

「ssh://username@192.168.9.9:22/volume1/git-repo/TEST_PROJECT」

#Client A-2.5 push後會跳出要求輸入使用者的密碼,填入後就可以正確上傳囉!

  如果是B情境的話,要做的步驟有:

  1. 複製遠端的Git版本庫

#Client B-1.1 在空白處點選右鍵,選取「Git 克隆」(如果你覺得這種中文化讓你受不了的話,也可以切換回英文)

#Client B-1.2 輸入遠端Git Repository的URL與複製到本地端後的位址,再點選「確定」即可。

 

其他的,就還在摸索中了。希望其他需要用到的功能都能不要太難上手,也祝我自己一切順利啦!

 

其他:

1. 如果在Commit過程出現「the submodule xxx is dirty」的錯誤訊息

  → 代表建立的repository目錄下,還有其他目錄有可能有建過repository(有其他的.git資料夾)

 

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *