Windows版 Git UI入門教學-使用TortoiseGit和雲端硬碟進行協同開發

雖然線上己經有很多成熟的Git Repository服務,ex Github

但想要免費使用就得公開原始碼,對我們來說不大方便。

Google了一下發現可以利用免費的雲端硬碟來當做Git Server。

我們這次使用的是Google Drive

使用之前必須先安裝相關軟體,資訊可以參考這篇

Windows版 Git UI入門教學-使用TortoiseGit & msysGit

A.建立遠端Git Repository

1.先在雲端硬碟中建立專案資料夾,並點滑鼠右鍵選擇Git Create repository here…

1

2.接著要勾選Make it Bare,代表這個資料夾是用來做為Git的Remote Repository

2

3.若資料夾出現下列檔案,就代表建立完成

3

B.建立本地專案目錄

1.到本地的工作目錄中,點選滑鼠右鍵選Git Clone,把遠端目錄Clone回來

4

2.

URL是Git Repository的資料夾位置

Directory是本地資料夾的位置

設定好後按OK

5

3.沒意外的話就會出現Clone成功,Directory也會出現在指定的位置上

6

C.建立第一個版本,Push到Server

1.建立內容,commit到本地,本例是在資料夾中新增一個master.txt的檔案

7

2.然後commit

8

3.在message打上此版本做過的變更,下面視窗會顯示此次修改的更動記錄,

Not Versioned  Files是指未被管理的檔案,如果這些檔案是要加入版本控管的,選得要打勾。

9

4.沒意外的話會出現Commit成功

10

5.Commit成功後,就可以Push到遠端的Repository去

在TortoiseGit的Menu中選擇Push

11

6.Local選的是本地端的分支,Remote要選遠端的分支

12

7.按下OK鈕,沒意外的話會出現另一次的成功畫面

13

D.其它USER取得Repository

假設現在有一位User 2,要取得剛剛那位User(以下稱作User1)Push的資料,該如何操作呢?

1.User2必須在他的專案資料夾按右鍵,點擊Git Clone功能

14

2.接著跟User1一樣,選擇URL目錄和Directory目錄後按OK

15

3.專案資料夾及以經被commit的內容就會出現了

16

E.開始協同作業

多人協同開發的流程基本上是這樣

順利的情況是這樣

修改->Commit 本地->Push 到Server ->沒衝突->完成

User2對專案內容做了一些修改, 新增了user2新增 .txt文件,並commit到本地後,Push到Server

17

出現完成訊息,就代表此次Push沒有衝突。

18

那麼User1只要在他的專案資料夾中,對TortoiseGit的menu選擇Pull,就能同步更新User2的修改。

19

3.Remote Branch要選擇Pull的分支

20

4.按OK後,若沒衝突就會出現成功的訊息,按右下角的Pulled Diff,可以觀看此次Pull做了哪些更新

21

雙擊檔案2下,就會跳出視窗顯示檔案和已修改的地方,非常方便!

22

接著在User1的專案目錄中,就己經被同步成最新版本了!

23

不順利的情況則是

修改->Commit本地->Push到Server->有衝突->失敗->處理衝突->再次Push到沒衝突為止->完成

假設User1和User2都同時對master.txt做了以下修改

User1 更新的內容如下

24

User2 更新的內容如下

25

然後..User1在下班前將他的版本commit後push到server中

User2今天晚了30分鐘下班,在下班前將他的版本commit到server後,就發生了以下的情況

26

錯誤原因上面寫的很清楚…總之就是..這次的修改與Server上的版本衝突了!

這時User2必須重新pull server上的版本(可直接按剛剛畫面左下角的Pull鈕),解決衝突發生的地方。

Pull發生衝突,TortoiseGit會主動詢問您是否要解決衝突

27

遇到問題不能逃避,所以User2很Man的選了YES

接著會出現列出所有需要解決衝突的檔案名單

28

點選檔案名稱檢視衝突內容

左上的視窗是SERVER上目前的版本,可以看到User1先前做的變更

右上的視窗是User2本地端的內容,大辣辣的記載User2今天的工作結晶

下面的視窗是工具自動合併的內容。

29

在Server端和Local端的視窗按滑鼠右鍵,有出現一些解決衝突的方式可供選擇

30

這是個困難的決定!

要為了顧全User1,選擇它,還是客觀的選擇最好的內容?

User2花了0.198201秒就做出了決定。

31

下面的視窗顯示了User2的決定。

User1應該會明白的…User2心裡想。

接著按下上面的綠色勾勾,將這個衝突設定為已解決。

32

再看到剛剛那個列著需要解決衝突的清單,己經被清空了,代表沒有其它衝突需要解決

33

接著進行commit然後Push

34

若沒有其它衝突,Push就會顯示User2成功把它的版本覆蓋到Server了!

35

看到這裡,大家應該能稍微明白Git協同開發的用法。

至於明天User1上班之後發生了什麼……..又是另一段故事了。

 

參考文件: http://www.dotblogs.com.tw/kirkchen/archive/2012/03/30/use_dropbox_as_git_repository.aspx

發表迴響