1、下载GIT源码并安装:php
$ git --version #先查看GIT是否已经安装,已经安装则不须要从新安装linux
$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-develgit
$ 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 targithub
$ tar zxvf git-1.9.0.tar.gzweb
$ cd git-1.9.0vim
$ make prefix=/usr/local/git allapp
$ make prefix=/usr/local/git install #root用户运行dom
若是编译时提示错误:
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] 错误 1ssh
$ cd /usr/local/src/curl
$ 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软件安装成功。
一、添加git用户
$ useradd git
$ passwd git
二、切换用户并生成密钥
$ su git
$ ssh-keygen -t rsa
一路按回车便可
三、下载并安装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库
四、增长用户与版本库
$ 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文件夹下面
五、使修改的配置文件生效
$ git add .
$ git commit -am “add web repo”
$ git push
OK,配置文件生效,也会生成了线上webapp空的GIT库
GIT地址为:git@10.11.121.9:webapp.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
一、注释掉:
#Defaults requiretty
解决错误:sudo:抱歉,您必须拥有一个终端来执行 sudo
二、配置git拥有超级权限执行chown命令,同时设置sudo不用输入密码的方法
root ALL=(ALL) ALL
git ALL=(ALL) NOPASSWD: NOPASSWD: ALL #添加左配置
一、在本地开发环境新增一个与线上代码同步的GIT库:web_online,对应地址为git@192.168.0.111:web_online.git,并设置好权限,只能管理员读写。
二、web_online克隆与主库web相同的代码。
三、修改web_online配置文件与线上的一致,并提交。
四、而后把web_online代码推送到线上的代码库,即git@10.11.121.9:webapp.git
五、根据代码对应位置设置好虚拟主机或者经过软连接来设置。
1、在linux下,用户默认公钥和私钥的位置
/用户目录/.ssh/id_rsa #用户的私钥
/用户目录/.ssh/id_rsa.pub #用户的公钥
二、生成其余用户公钥密钥
$ ssh-keygen -t rsa #下一步输入公钥密钥的名称,例如zhangsan,往下所有按Enter键
三、设置会话管理配置
$ vi /用户目录/.ssh/config 配置成以下:
Host 192.168.0.111 ##别名,能够随意命名,连接时使用这个名字
HostName 192.168.0.111 ##主机名
User zhangsan ##用户名
Port 22 ##端口
IdentityFile ~/.ssh/zhangsan ##密钥文件的路径
四、把公钥文件放置到gitolite服务端的keydir文件下,而后使修改添加的配置文件生效便可 (查看上面安装Gitolite第5点说明)