一、安裝GIT
1、下載GIT源碼並安裝:
$ git --version #先查看GIT是否已經安裝,已經安裝則不需要重新安裝
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
$ wget http://git-core.googlecode.com/files/git-1.9.0.tar.gz 或者 wget https://www.kernel.org/pub/software/scm/git/git-1.9.0.tar.gz tar
$ tar zxvf git-1.9.0.tar.gz
$ cd git-1.9.0
$ make prefix=/usr/local/git all
$ make prefix=/usr/local/git install #root用戶運行
如果編譯時提示錯誤:
LINK git-credential-store
libgit.a(utf8.o): In function `reencode_string_iconv’:
/opt/git-master/utf8.c:530: undefined reference to `libiconv’
libgit.a(utf8.o): In function `reencode_string_len’:
/opt/git-master/utf8.c:569: undefined reference to `libiconv_open’
/opt/git-master/utf8.c:588: undefined reference to `libiconv_close’
/opt/git-master/utf8.c:582: undefined reference to `libiconv_open’
collect2: ld 返回 1
make: *** [git-credential-store] 錯誤 1
$ cd /usr/local/src/
$ wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
$ tar -zxvf libiconv-1.14.tar.gz
$ cd libiconv-1.14
$ ./configure --prefix=/usr/local/libiconv && make && make install
重新安裝GIT
$ cd /usr/local/src/git-1.9.0
$ ./configure --prefix=/usr/local/git --with-iconv=/usr/local/libiconv
$ make
$ make install
2、安裝完成,查看GIT的版本
$ /usr/local/git/bin/git --versiongit version 1.9.0
把GIT命令添加到全局變量中
$ vi /etc/profile在最后添加 export PATH=$PATH:/usr/local/git/bin
$ source /etc/profile #修改使其生效
查看GIT版本
$ git --versiongit version 1.9.0
OK,GIT軟件安裝成功。
二、安裝Gitolite
1、添加git用戶
$ useradd git
$ passwd git
2、切換用戶並生成密鑰
$ su git
$ ssh-keygen -t rsa
一路按回車即可
3、下載並安裝Gitolite
$ git clone http://github.com/sitaramc/gitolite.git
$ cd gitolite
$ pwd
/home/git/gitolite
$ ./install
use the following full path for gitolite:
/home/gitadmin/gitolite/src/gitolite
$ /home/gitadmin/gitolite/src/gitolite
$ /home/gitadmin/gitolite/src/gitolite setup
出錯:
Initialized empty Git repository in /home/gitadmin/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/gitadmin/repositories/testing.git/
WARNING: /home/gitadmin/.ssh/authorized_keys missing; creating a new one
解決
$ cd src
$ ./gitolite setup -pk /home/git/.ssh/id_rsa.pub
Initialized empty Git repository in /home/gitadmin/repositories/gitolite-admin.git/
Initialized empty Git repository in /home/gitadmin/repositories/testing.git/
WARNING: /home/gitadmin/.ssh/authorized_keys missing; creating a new one
表示安裝成功,並且初始化了基本git庫
4、增加用戶與版本庫
$ git config –global user.name “yourname”
$ git config –global user.email “youremail@localdomain.com”
$ cd ~
$ git clone git@127.0.0.1:gitolite-admin
$ cd gitolite-admin
進入 gitolite-admin 目錄,其中的 keydir 目錄是用來放置用戶公鑰的,而 conf/gitolite.conf 則是用來配置用戶和版本庫
編輯 $vi conf/gitolite.conf配置成如下:
@web_rw = lisi
@web_r = zhangsan
repo gitolite-admin
RW+ = id_rsa
#repo testing
#RW+ = @all
repo webapp
RW+ = @web_rw
RW = @web_rw
R = @web_r
其中所有用戶名的公鑰文件應該放在keydir文件夾下面
5、使修改的配置文件生效
$ git add .
$ git commit -am “add web repo”
$ git push
OK,配置文件生效,也會生成了線上webapp空的GIT庫
GIT地址為:git@10.11.121.9:webapp.git
三、設置GIT鈎子自動更新代碼
$ cd /home/www/php/web.com #當前是在git用戶下操作
$ git clone git@10.11.121.9:webapp.git #拉取GIT庫代碼
$ cd ~
$ cd /home/git/repositories/webapp.git/hooks
$ cp post-update.sample post-update #添加GITa添加鈎子文件
$ vim post-update #編輯如下,保存退出
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".
unset $(git rev-parse --local-env-vars)
cd /home/www/php/web.com/webapp
sudo /usr/local/bin/git pull
sudo chown -R www:www .
注釋:post-update這個腳本在提交文件到git倉庫時,會運行文件內的代碼,所以通過這樣的方法,我們在客戶端push提交代碼后,就能自動更新網站的文件了。
$ su root
$ vi /etc/sudoers
1、注釋掉:
#Defaults requiretty
解決錯誤:sudo:抱歉,您必須擁有一個終端來執行 sudo
2、配置git擁有超級權限執行chown命令,同時設置sudo不用輸入密碼的方法
root ALL=(ALL) ALL
git ALL=(ALL) NOPASSWD: NOPASSWD: ALL #添加左配置
四、使用TortoiseGit推送線上代碼操作說明
1、在本地開發環境新增一個與線上代碼同步的GIT庫:web_online,對應地址為git@192.168.0.111:web_online.git,並設置好權限,只能管理員讀寫。
2、web_online克隆與主庫web相同的代碼。
3、修改web_online配置文件與線上的一致,並提交。
4、然后把web_online代碼推送到線上的代碼庫,即git@10.11.121.9:webapp.git
5、根據代碼對應位置設置好虛擬主機或者通過軟鏈接來設置。
五、關於公鑰私鑰配置的操作說明
1、在linux下,用戶默認公鑰和私鑰的位置
/用戶目錄/.ssh/id_rsa #用戶的私鑰
/用戶目錄/.ssh/id_rsa.pub #用戶的公鑰
2、生成其他用戶公鑰密鑰
$ ssh-keygen -t rsa #下一步輸入公鑰密鑰的名稱,例如zhangsan,往下全部按Enter鍵
3、設置會話管理配置
$ vi /用戶目錄/.ssh/config 配置成如下:
Host 192.168.0.111 ##別名,可以隨意命名,鏈接時使用這個名字
HostName 192.168.0.111 ##主機名
User zhangsan ##用戶名
Port 22 ##端口
IdentityFile ~/.ssh/zhangsan ##密鑰文件的路徑
4、把公鑰文件放置到gitolite服務端的keydir文件下,然后使修改添加的配置文件生效即可 (查看上面安裝Gitolite第5點說明)