2011/10/20

git for windows 2 - 分散式之 server 端篇


在說明之前,先提一篇必看的文章,8 ways to share your git repository

先講一下基本觀念,因為要跟別人共用,所以要透過網路傳輸的協定,基本上有 git, ssh, http, https 等.....各有優缺,這邊以上面的教學來操作 ssh 的部份。

git 本身並沒有分 client 或是 server, 這邊講的 server 其實是指「連線功能」本身的,就好像要用 http protocol 的話,總要安裝 web server, ssh protocol 的話,就要安裝 ssh server. 而要用 git 的話,其實它也是用 ssh, 所以一樣要安裝 ssh server.

在 ubuntu 下的話,可以透過安裝 openssh-server 即可達標,windows 下我則建議使用 cygwin,當然其他套件也是非常多選擇啦,不過我並沒有打算在 windows 裝,所以這邊講的也都是指 ubuntu 下的。

$ sudo apt-get install openssh-server

接下來(至少)有兩種使用情境,只是要先提一下另外兩篇文章,只是因為與本文有點關係而已,跟我這邊要講的情境關係是有但是不大:請參考 Git Book, Setting a public repository 及 Git Book, Setting a private repository

在講server 端的操作的使用情境時,可以先了解一個 git 特有的概念,叫『bare git repository』,不管在 clone 或是 init 時,都可以加上 --bare。按照英文的意思,是叫「裸露」,也就是說並沒有內容,也就是沒有 project files, 只有 git repository 資料結構而已。請參考 push to only bare repository 或是 git bare v.s. none bare repository


server 端的操作的第一種情境是建立一個空的 repository ,此時可以用 git init --bare。這個情境通常是用來建立一個 public repository給自己用,也就是,如果你想在自己的機器上建立一個 git public repository 來給別人抓(pull)源碼的情況。

我知道這樣講也很模糊,這也是 git 讓人覺得複雜的地方,先用圖來說明, 在 git book, distributed workflows裡面有個圖:


                        you push
  your personal repo -----------------> your public repo
    ^                                     |
    |                                     |
    | you pull                            | they pull
    |                                     |
    |                                     |
    |               they push             V
  their public repo <------------------- their repo
左上角,也就是我之前貼的那篇 git for windows 單機版
而右上角,也就是第一個情境 git init --bare

同樣的,所謂的第二個情境,則是從遠端抓下來。由上圖可以很容易發現,就是把別人的 public repo 抓下來而已。用的是 git pull 或 git clone --bare 重新建立一個自己的 public repo

0 意見: