環境:centos和ubuntu系統都可以
CentOS release 6.7
git version 1.7.1
git-server 192.168.50.108
git-client 192.168.50.112
備註:基於linux系統下做ssh模式的gitserver,需要ssh免密鑰,因爲git用戶是禁止登錄的,clone時沒有免ssh後會需要密碼導致無法操作。
部署:
git-server:
1.安裝git軟件(客戶端和服務器端使用的是同一個軟件)
yum install git -y
2.初始化倉庫(鑑於此處是共享倉庫,所有要建立裸倉庫)
mkdir /data/sample.git
git init --bare /data/sample.git
chown git.git /data/sample.git -R
3.配置git用戶使用的shell爲git-shell
which git-shell(返回結果/usr/bin/git-shell)
chsh -s /usr/bin/git-shell git
git-client:
1.安裝git軟件
yum install git -y
2.配置用戶的ssh密鑰信息,並提供給git-server
ssh-keygen -t rsa -C "[email protected]" (與git config的信息一致,記錄文件log信息,可查看是誰修改的。)
假如你是用的是本臺機器root用戶,生成的密鑰默認在/root/.ssh/下
scp /root/.ssh/id_rsa.pub [email protected]:/tmp
git-server:
允許另外一天機器的用戶無密鑰訪問git用戶的信息
mkdir /home/git/.ssh && cat id_rsa.pub >>/home/git/.ssh/authorized_keys
git-client:
1.clone遠程server的裸倉庫
git clone [email protected]:/data/sample.git
2.添加遠程倉庫作爲源倉庫
git remote add origin [email protected]:/data/sample.git
git remote -v(查看存在的倉庫源)
2.默認clone的是master倉庫,可以直接在master更新
cd sample/
echo "this is a test file" >test
3.配置git全局信息
git config --global user.name 'test'
git config --global user.email '[email protected]'
4.添加並提交文件
git add test
git commit -m "this is fire commit"
5.把修改後的文件推送的git-server源做共享
git push -u origin master
注:由於代碼存在多個版本,且介於安全考慮master會被限制,用戶可以自己創建分支,然後請求合併。 所以大多數修改並不是直接在master上。以下是分支操作
1.clone maste後創建分支
git checkout -b fenzhi
git branch(查看當前所在分支)
2.添加並提交文件
echo "hello world " >fenzhifile
git add
git commit -m 'fenzhi'
3.把新建的分支推送到git-server源做共享
git push origin fenzhi
git-client:測試
1.測試master:換臺機器(同樣需要免ssh)或換個目錄測試
cd /tmp
git clone [email protected]:/data/sample.git
查看只有一個test文件,這個是我們剛纔在master上添加的。
cd sample/ && cat test
2.測試fenzhi
git clone [email protected]:/data/sample.git -b fenzhi
同樣剛纔的fenzhi文件也存在,test也存在。因爲我們是在master主要功能上修改的。如果文件沒有相同的,那就是不同的項目。
git幫助手冊