git分佈式的理解----簡單服務端搭建

  Git是分佈式的,並無服務端跟客戶端之分,所謂的服務端安裝的其實也是git。Git支持四種協議,file,ssh,git,http。ssh是使用較多的,下面使用ssh搭建一個免密碼登陸的服務端。git

  一、提早安裝git跟sshserver;github

  二、 建立一個用戶,用來運行git服務;服務器

  新建一個用戶,叫gituser,而後切換到gituser的默認目錄,建立一個叫.ssh的文件夾,並在其中建立一個叫authorized_keys的文件,這個文件將用於存儲git開發者的ssh公鑰。ssh

  

  三、創建一個git倉庫;分佈式

  切換到gituser默認目錄,創建一個testgit文件夾,在其中建立一個用於測試的git項目並進行初始化。svn

  

  建立一個aaa.txt,內容隨便填寫,將該文件歸入git管理工具

  

  四、建立證書gitlab

  切換到git開發者電腦。設置本地git用戶並建立公鑰和私鑰測試

  

  Windows系統,在用戶主目錄下有id_rsa.pub跟id_rsa兩個文件:spa

  

  

  這兩個就是一對祕鑰,id_rsa是私鑰,id_rsa.pub是公鑰。

  五、添加公鑰到ssh  

  將本地生成的id_rsa.pub的內容追加到git服務器gituser用戶的~/.ssh/authorized_keys文件中。注意,不是把authorized_keys建成文件夾,把公鑰扔進去,是追加文件內容。

  特別要注意:.ssh的權限必須是700,authorized_keys文件的權限必須是600,不然公鑰沒法生效。

  六、修改ssh服務端配置

  vi /etc/ssh/sshd_config

  

  七、從服務端clone項目

  在開發者電腦端,執行如下命令:

  

  能夠看到咱們成功把「服務器」上的git項目clone到了本地。

  ------------------------------------------------------------------------------------------------------------

  其實,上面的操做有些繁瑣:在「服務端」建一個git項目,而後初始化,而後建一個能夠免密碼登陸的用戶,而後用這個帳號把git項目拷貝了下來;簡單來講,我難免密碼登陸,也能夠git clone那個項目,好比我用root用戶:

  

  也就是說,只要「服務端」有git項目,有一個能夠遠程登陸的ssh用戶,咱們就能夠直接git clone 那個項目,這個時候,「服務端」跟「客戶端」都只要git,沒有所謂的gitlab等服務端軟件,二者之間只是經過ssh通訊就能夠實現git的clone,commit等操做,二者地位是平等的。

  可見git的確是無中心的分佈式的。而github,gitlab之類的「服務端」實際上是一個幫助咱們管理用戶跟git通訊方式的工具,在這一點上,gitlab跟visualsvn-server之類的軟件有本質的區別。

  ------------------------------------------------------------------------------------------------------------

相關文章
相關標籤/搜索