Synology上的版本控管 Git Server + TortoiseGit Client
因為工作上個人的需要,針對程式碼還是得弄個版本控管,要不然開發新功能時如果發生意外,想要退回之前的版本就很頭大了。原本想說應該很簡單(但實際上真的不難),上個週末在家在Synology主機上嘗試安裝Git Server或是GitLab,弄了兩天還是搞得一塌糊塗。安裝GitLab還需要另外安裝Docker,整個跑起來蠻吃系統資源的,再加上一下跟WordPress的Tomcat port相衝,一下web無法連接,所以就放棄他了(要不然它有web管理介面似乎蠻方便的);Git Server則是在還沒弄清楚的時候就瞎試,也是白白浪費了一整天。
結果今天意外上班時試了一下,居然順利OK了,看來做事還是要心平氣和、按部就班(可能是手遊打太多,跟看到怪一樣,想要一打就死,沒打死就整個很急躁)。簡單記錄一下,今天實做的步驟。
Server端
Synology導入Git,在Server端基本上要做幾件事:
- 在Synology上安裝「Git Server」套件。
- 建立一個Git Repository的目錄,並將要建立的專案目錄建立在這個目錄下。
- 在電腦上,透過ssh登入Synology主機(需在「終端機&SNMP」裡開啟SSH登入功能)。進入該專案目錄下後,初始化這個專案的git repo。
- 先在「共用資料夾」裡新增一個Git Repository的目錄,假設我們取名「git-repo」
- 再在這個目錄下建立專案的目錄,假設我們現在要建立的專案名稱是「TEST_PROJECT」
- 資料夾建立後,要記得修改權限。看你之後要用哪一個使用者登入,該使用者要有這個資料夾的讀寫權限。
git --bare init
這樣,Server端的專案目錄就算建立完成了
Client端
Client端我是使用TortoiseGit,有需要的人可以在右邊下載 → https://tortoisegit.org/
另外,也需要安裝GitHub Desktop version(TortoiseGit會使用一些Git的指令),右邊可以下載 → https://gitforwindows.org/
Client端的動作大概可以分為兩種(以下簡稱為A情境與B情境),一個(A)是你第一次要初始化的上傳(上傳最原始的程式碼版本),一種(B)是Server上已經有程式碼版本,你要直接抓取最新的版本下來。
A情境 初始化的上傳
如果是A情境的話,要做的步驟有:
- 在已經有程式碼的資料夾建立Git版本庫
- 提交這個Git版本庫
建立Git版本庫
提交Git版本庫
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」
點選「確定」即可新增完成連線設定。
B情境 Clone伺服器端的程式碼
如果是B情境的話,要做的步驟有:
- 複製遠端的Git版本庫
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」
其他
其他的,就還在摸索中了。希望其他需要用到的功能都能不要太難上手,也祝我自己一切順利啦!
其他:
1. 如果在Commit過程出現「the submodule xxx is dirty」的錯誤訊息
→ 代表建立的repository目錄下,還有其他目錄有可能有建過repository(有其他的.git資料夾)
2. 關於Branch的操作,可以參考 這篇