SVN是集中式管理版本控制,Git分佈式版本控制,相對來說,Git更加的靈活一些。現在N多做APP研發的都採用了Git來管理代碼倉庫。
github就是這樣一個平臺,提供代碼的管理。但是很多技術公司,還是希望使用自己的Git服務器!
網路上有很多教程,但是都不太詳細,多半都是抄來抄去。
我們這裏安裝的是
git-2.11.2.tar.gz 版本,記得去官方網站下載!
第一步,先安裝依賴包:
yum -y install gcc gcc-c++ make automake autoconf libtool zlib-devel perl-CPAN gettext gettext-devel openssl-devel expat-devel curl-devel perl-devel perl-ExtUtils-MakeMaker
具體這些包都是幹什麼用的,我也不太清楚,你們自己百度吧,或許某些包是不需要安裝的。
第二步,安裝 Git 服務器端:注意我的安裝位置:/data/git 目錄下。我把 git-2.11.2.tar.gz 上傳到了/data/ide目錄下。
mkdir /data/git
cd /data/ide
tar -zxvf git-2.11.2.tar.gz
cd git-2.11.2
make prefix=/data/git all
make prefix=/data/git install
第三步,把Git命令加入到環境變量中,這樣我們就可以在任何目錄下,都可以執行Git命令,注意路徑啊。
echo "export PATH=$PATH:/data/git/bin" >> /etc/bashrc
source /etc/bashrc
git --version
git version 2.11.2
我在這裏執行了版本命令,顯示是 2.11.2版本,這個說明,我安裝成功了。
第四步,我們使用Git命令配置一下
git config --global user.name "your name"
git config --global user.email "your [email protected]"
git config --list
我們設置了您的name和email,這個根據自身情況設置就行了。
第五步, 創建一個git用戶,並給這個用戶創建SSH祕鑰目錄,git用戶的名稱隨意,儘量不要用"git"
groupadd git_xxx
useradd -g git_xxx git_xxx
passwd git_xxx
XXXXXXXXXXXX // 密碼沒有實質意義,因爲我們不使用密碼登陸, 但還是要複雜一些吧。
cd /home/git_xxx // 每個賬號都會在home下有個同名目錄,這個大家都應該清楚。
mkdir .ssh // 這個是目錄,有點啊,不要去掉啊
cd .ssh
vi authorized_keys // SSH訪問權限文件, 裏面存放客戶端提交的公鑰,稍後講解。
:wq
chown git_xxx:git_xxx /home/git_xxx/.ssh
chown git_xxx:git_xxx /home/git_xxx/.ssh/authorized_keys
上面的內容,需要大家仔細注意,創建git用戶後,還要到該用戶目錄下創建祕鑰文件,並將祕鑰文件歸屬給創建的git用戶。
第六步,出於安全考慮,你可以用 Git 自帶的 git-shell 工具限制 git 用戶的活動範圍。這可以通過編輯 /etc/passwd 文件完成。
vi /etc/passwd
git_xxx:x:500:500::/home/git_xxx:/bin/bash
改爲:
git_xxx:x:500:500::/home/git_xxx:/data/git/bin/git-shell
注意啊,改動的內容其實就是後面的路徑而已。
現在 git_xxx 用戶只能用 ssh 連接來推送和獲取 Git 倉庫,而不能直接使用服務器的 shell。嘗試普通 ssh 登錄的話,會被拒絕登錄。
第七步,Git服務器打開RSA認證,解開註釋即可。
vi /etc/ssh/sshd_config
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile /home/git_xxx/.ssh/authorized_keys
service sshd restart
Git的倉庫地址有兩種方式:
一種是SSH連接方式,形式爲:[email protected]:repertory/project.git
一種是HTTPS形式, 形式爲: https://xxx.com/repertory/project.git
這兩種倉庫地址使用的認證方式也不一樣。對於SSH連接,使用非對稱公鑰認證方法;對於HTTP連接,使用帳號密碼認證方式。
這些大家都明白了吧,我們使用第一種方式SSH方式,此方式需要祕鑰文件的,不瞭解的朋友,自己百度吧。
第八步, 創建Git項目倉庫並初始化
mkdir /data/repertory
cd /data/repertory
git init --bare test.git
chown -R git_xxx:git_xxx test.git
上面的腳步很清楚,我在/data/repertory目錄下創建了 test.git 的倉庫,那麼他的訪問形式如下:
[email protected]:/data/repertory/test.git
看清楚了,訪問的形式就是 git用戶@IP地址:倉庫目錄,簡單吧。
第九步,將客戶端提交上來的 公鑰文件 id_rsa.pub 加入到 /home/git_xxx/.ssh/authorized_keys文件裏,一行一個。
cd /home/git_xxx // 我把公鑰文件上傳到了這個目錄
cat ./id_rsa.pub >> ./.ssh/authorized_keys
到這裏大家都很清楚了,客戶端通過 祕鑰文件,就能直接訪問代碼倉庫了,而不是通過賬號密碼登陸的方式。那麼客戶端的祕鑰文件如何生成呢?
話題轉移到客戶端,就是程序員開發的PC電腦,以Win7 64位爲例,我們需要安裝Git客戶端:Git-2.11.1-64-bit.exe, 記得去官網下載嘍。
安裝這個東西后,就會有一個 git-bash.exe 的窗口以供操作,跟Dos黑窗口一樣,用於執行git命令的。
$ git config --global user.name "your name"
$ git config --global user.email "your [email protected]"
$ ssh-keygen -t rsa -C "your [email protected]"
上面的前兩行大家都清楚,就是配置自己的名稱和郵件,跟服務器端是一個道理。
第三行就是生成祕鑰文件,中間需要交互(設置祕鑰文件密碼),一律回車即可(密碼爲空)。
祕鑰文件生成後,它會提示你文件的目錄,一般情況下是:C:\Users\PC Name\.ssh目錄下。
就是你PC電腦用戶下的.ssh目錄下,就有 id_rsa.pub, 就是公鑰。
下一節,我們將一下如何使用 Android Studio鏈接咱們創建的遠程代碼倉庫:[email protected]:/data/repertory/test.git