centos7上安装git服务器及git使用

一、安装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

1

连接到共享仓库时会提示输入密码,密码为git用户密码。连接采用ssh连接,端口为22。

4、创建证书登录

(1)创建密钥对:

#ssh-keygen -t rsa -C 备注

2

公钥保存在/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使用


3

以下是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)。