一、安装git
1、安装依赖库
#yum install openssl-devel curl-devel zlib-devel expat-devel
#yum install gcc perl-ExtUtils-MakeMaker
#yum install wget vim
2、创建安装目录
#mkdir /usr/local/git
#cd /usr/local/git
3、下载源码并编译安装
#wget https://github.com/git/git/archive/v2.9.2.tar.gz
#tar -zxvf v2.9.2.tar.gz
#cd git-2.9.2
#make prefix=/usr/local/git all
#make prefix=/usr/local/git install
4、添加到环境变量
#vim /etc/profile
添加这一条:
export PATH="/usr/local/git/bin:$PATH"
#source /etc/profile #使配置立即生效
5、将git设置为默认路径,不然后面克隆时会报错
#ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack
#ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack
6、git配置
#git config --global user.name "sipeng"
#git config --global user.email "2632422@qq.com"
git配置存在3个地方:
(1)/etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
(2)~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
(3)当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。
每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
至此,git安装完成,可以使用git --version查看git版本。
二、安装git服务器
1、创建登录用户
#groupadd git
#useradd git -g git
#passwd git
#su - git
2、创建裸git仓库用于共享
安装git的某台机子可以创建裸仓库用于共享,裸仓库只有版本库,没有工作区和暂存区。
#git init --bare xygsc.git
3、克隆共享仓库
在客户机上操作:
#git clone git@serverip:/home/git/xygsc.git

连接到共享仓库时会提示输入密码,密码为git用户密码。连接采用ssh连接,端口为22。
4、创建证书登录
(1)创建密钥对:
#ssh-keygen -t rsa -C 备注

公钥保存在/home/git/.ssh/id_rsa.pub文件中
私钥保存在/home/git/.ssh/id_rsa文件中 (密钥用于登录)
(2)复制公钥到文件/home/git/.ssh/authorized_keys文件中(多人登录,可以生成多对公密钥对,复制公钥一行一个),文件不存在可以创建:
#touch /home/git/.ssh/authorized_keys
特别注意:git用户对该文件要有读取权限
#chmod 600 authorized_keys
(3)开启ssh的公钥登录:
修改配置文件
#vim /etc/ssh/sshd_config
去掉如下内容的注释:
RSAAuthentication yes
PubkeyAuthentication yes
至此,把私钥复制到客户机.ssh目录,就可以采用私钥登录了。
#git clone git@serverip:/home/git/xygsc.git
本方法适用于人数较少的团队。
三、git使用

以下是git bash的常用操作步骤
1、从远程仓库中克隆
git clone git@serverip:/home/git/xygsc.git
克隆远程仓库所有分支,若要克隆指定分支使用如下命令
git clone -b branch-name git@serverip:/home/git/xygsc.git
2、切换到要操作的分支
git checkout -b branch_name #切换分支,-b参数表示若分支不存在则会创建分支
分支操作的其它命令:
git branch #查看本地分支
git branch -r #查看远程分支
git branch -a #显示本地和远程分支
git branch branch-name #创建分支
git branch -D branch-name #删除分支
git merge branch-name #合并指定分支到当前分支
3、可以对源码进行操作修改,修改完成后提交修改到本地仓库
git add .
git commit -am "备注"
其它命令:
忽略掉某些文件,不让它们提交到版本库中,可以在文件.gitignore中加入。
如果已经commit了,再加入gitignore是无效的,所以需要删除下缓存
git rm -r --cached 文件或路径名
(.gitignore只能忽略那些原来没有被track的文件,如果某些文件已经被纳入了版本管理中,则修改.gitignore是无效的。
正确的做法是在每个clone下来的仓库中手动设置不要检查特定文件的更改情况。
git update-index --assume-unchanged 文件或路径名)
git checkout --filename #取消修改,还原到暂存区中的状态
git status #查看状态
git diff #查看未缓存的改动
git diff --cached #查看缓存的改动
git reset --hard 版本 #回退版本
git log #可以查看版本
4、本地修改完成后可以提交远程库
git push remote local-branch:remote-branch #推送本地分支到远程分支
若出现冲突,则要先从远程库中获取更新,然后解决冲突,再提交。
git pull remote remote-branch:local-branch #提取远程分支到本地分支
git pull remote remote-branch #提取远程分支到本地当前分支
远程库操作的其它命令:
git remote -v #查看远程库,-v参数表示显示对应的地址
git push remote :remote-branch #删除远程分支
git pull -p remote #删除远程没有的本地分支
git的状态
A: 你本地新增的文件(服务器上没有).
C: 文件的一个新拷贝.
D: 你本地删除的文件(服务器上还在).
M: 文件的内容或者mode被修改了.
R: 文件名被修改了。
T: 文件的类型被修改了。
U: 文件没有被合并(你需要完成合并才能进行提交)。
X: 未知状态(很可能是遇到Git的bug了,你可以向git提交bug report)。