大綱:
一、前言
二、Git 服務器搭建
三、增加遠程倉庫
四、從遠克隆倉庫
五、總結
注,測試機 CentOS 5.5 x86_64,Git 服務器版本:git version 1.8.2.1,客戶端版本:git version 1.9.2.msysgit.0。所有軟件請到這裏下載:http://msysgit.github.io/。
一、前言
在上一篇博文中我們主要講解了,Git 本地倉庫的管理。大家再也不用然也文件的管理與備份了。Git 都幫你搞定,嘿嘿!那有博友會說了,你上一篇的講的內容SVN都能實現,你那Git也沒什麼了不起的嘛?嘿嘿,我想說的是在衆多的版本控制肯定有相同的功能,但是我們還得看一些特別並且實用的功能吧,今天的我們就爲大家演示Git的特殊功能(之一)——遠程版本庫。
大家都知道Git是分佈式版本控制器,同一個版本庫可以在不同的客戶端上使用。所以呢,必須的一臺主服務器,這樣的所有的客戶端可能“克隆”這個原始版本庫,並且每臺客戶端的版本庫都會一樣,嘿嘿。所以說呢,想要多人一起開發必須要有一臺Git服務器。這樣其他人就可以從這服Git服務器上克隆一份到自己的電腦上,也可以把各自的代碼提交到遠程服務器的版本庫裏,並且可以拉取別人提交的代碼。是不是很方便呢,嘿嘿!那有博友會說了,我們沒有多於的電腦搭建Git服務器怎麼辦?那我只想說,也是可以的。因爲有個網站叫GitHub。這個網站提供Git版本庫的管理。你只要到GitHub網站上註冊一個賬號,就可以免費獲得一個Git遠程倉庫,是不是很神奇呢?再這裏我們要感謝開源,感謝開源精神。
上面已經說的比較清楚了,我們要獲得Git遠程倉庫實現多人開發的目的,我們有兩個辦法:
自己搭建Git服務器
選擇開源的GitHub
我這裏主要講解自己搭建服務器,畢竟企業裏找臺服務器還是很容易的,嘿嘿。至於沒有服務器的朋友想要使用GitHub我們會在後面的文章裏詳細講解GitHub。好了,下面我們就來搭建自己的Git服務器。
二、Git 服務器搭建
下面我們就來搭建Git服務器,嘿嘿!其實呢,Git服務器搭建在前面的文章中已經講過了,下面我們來簡單的給大家演示一下,嘿嘿!
[root@test ~]# rpm -ivh http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm [root@test ~]# yum list [root@test ~]# yum install -y git [root@test ~]# git --version git version 1.8.2.1
好了,到這裏我們的Git服務器就安裝完成了,嘿嘿。比較簡單吧!
三、增加遠程倉庫
1.增加git用戶來運行git服務
[root@test ~]# mkdir -pv /data/git mkdir: created directory `/data/git' [root@test ~]# useradd -r -d /data/git git
2.創建一個git倉庫並初始化一個空庫
[root@test git]# cd /data/git/ [root@test git]# ls [root@test git]# git init --bare project1.git Initialized empty Git repository in /data/git/project1.git/ [root@test git]# cd project1.git/ [root@test project1.git]# ls
branches  config  description  HEAD  hooks  info  objects  refs
通過上面的命令,Git 就會創建一個裸倉庫,裸倉庫沒有工作區,因爲服務器上的Git倉庫是爲了共享用,所以不讓用戶直接登錄到服務器上去修改工作區,一般服務器上的Git倉庫都是以.git結尾。然後我們再修改目錄的所有者。
[root@test project1.git]# chown -R git.git /data/git/* [root@test project1.git]# ll total 32 drwxr-xr-x 2 git git 4096 May 20 17:30 branches -rw-r--r-- 1 git git   66 May 20 17:30 config -rw-r--r-- 1 git git   73 May 20 17:30 description -rw-r--r-- 1 git git   23 May 20 17:30 HEAD drwxr-xr-x 2 git git 4096 May 20 17:30 hooks drwxr-xr-x 2 git git 4096 May 20 17:30 info drwxr-xr-x 4 git git 4096 May 20 17:30 objects drwxr-xr-x 4 git git 4096 May 20 17:30 refs
3.禁用git用戶登錄
[root@test project1.git]# vim /etc/passwd [root@test project1.git]# cat /etc/passwd | grep git git:x:101:105::/data/git:/usr/bin/git-shell
我們出於安全的考慮,修改git用戶的shell。我這裏修改爲/usr/bin/git-shell。這樣git用戶就無法登錄系統,因爲我們指定的是git-shell每次登錄就會自動退出的,嘿嘿。好了,到這裏我們Git倉庫就初始化完成了。下面我們來演示在客戶端克隆遠程倉庫……
四、從遠程克隆倉庫
1.客戶端生成ssh登錄公鑰
2.查看生成的ssh公鑰
3.將生成的公鑰發送git服務器上(因爲我這裏就能管理git服務器所以我直接scp了,不能管理git服務器的開發人員請將公鑰發給管理員並進行相關操作)
[root@test ~]# cd /data/git/ [root@test git]# ls project1.git [root@test git]# ls -a .  ..  project1.git [root@test git]# mkdir .ssh [root@test git]# ls project1.git [root@test git]# ls -a .  ..  project1.git  .ssh [root@test git]# cd .ssh/ [root@test .ssh]# vim authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwMU4FKB6NRc3XSoIunWsdvVVuSoncbVb5Al6lB3ciswBVd++YmJFhqwkITNGccrO5sycROs9+Fbjgd6oBSzNuaBtCIbwNNsEyM/henTl2euI3XsnJQ/ITr6c/q0P3WoGl4E2QFQ2kZqs+1eDC0CgHcBrqvFv1Jr414sVYK9lfZwIF+jDdtaBOrSJuq1Agx9pGUFUEB4tQfkXxsWm/MvOmKAVvduKDE1eenUEL9zzyeELPcSXLe3NOoTjZhkX6EEXxQR1ZiZRFywLpfM4qopZ10to2KIUyVtzw6hx6V3cg7kn40lYVW0EAMATw9dVldwcRUI+kJzJSKUTKDVSwY3/+Q== root@CHENMINGQIAN [root@test .ssh]# cat authorized_keys ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAwMU4FKB6NRc3XSoIunWsdvVVuSoncbVb5Al6lB3ciswBVd++YmJFhqwkITNGccrO5sycROs9+Fbjgd6oBSzNuaBtCIbwNNsEyM/henTl2euI3XsnJQ/ITr6c/q0P3WoGl4E2QFQ2kZqs+1eDC0CgHcBrqvFv1Jr414sVYK9lfZwIF+jDdtaBOrSJuq1Agx9pGUFUEB4tQfkXxsWm/MvOmKAVvduKDE1eenUEL9zzyeELPcSXLe3NOoTjZhkX6EEXxQR1ZiZRFywLpfM4qopZ10to2KIUyVtzw6hx6V3cg7kn40lYVW0EAMATw9dVldwcRUI+kJzJSKUTKDVSwY3/+Q== root@CHENMINGQIAN
4.客戶端克隆遠程倉庫到本地
五、總結
好了,到這裏我們的遠程倉庫管理就到這裏結束了,在下篇博客中我們主要講解Git 分支管理。最後,希望大家有所收穫吧^_^……