git

git
代码管理仓库

功能:
开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。

工作原理:

pull:下载、获取
开发者从git-server下载代码
push:上传、推送
开发者将本地代码提交到git-server
冲突:
提交:上传代码
分支:每个开发人员,按照规划,在自己的分支编写代码

同类产品:windows SVN

1. git-server

[root@git-server ~]# yum install -y git gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel perl-DBI perl-Error perl-Git perl-Test-Harness perl-Test-Simple perl-YAML pakchois neon libproxy libproxy-bin libproxy-python apr apr-util apr-util-ldap perl-Data*

创建2个用户:
git 保存代码
admin 管理用户

[root@git-server ~]# useradd git
[root@git-server ~]# useradd admin
[root@git-server ~]# echo admin | passwd --stdin admin
[root@git-server ~]# su - admin
[admin@git-server ~]$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/admin/.ssh/id_rsa): 
Created directory '/home/admin/.ssh'.
Enter passphrase (empty for no passphrase): 输入私钥密码
Enter same passphrase again: 密码确认
[admin@git-server ~]$ cd .ssh/
[admin@git-server ~/.ssh]$ ls
id_rsa  id_rsa.pub
[admin@git-server ~/.ssh]$ cp id_rsa.pub /tmp/admin.pub
[root@git-server ~]# su - git

[git@git-server ~]$ tar zxf centos7-gitolite.tgz 
[git@git-server ~]$ ls
centos7-gitolite.tgz  gitolite
[git@git-server ~]$ rm -f centos7-gitolite.tgz 

将命令加入git用户的PATH变量:
[git@git-server ~]$ mkdir bin
[git@git-server ~]$ gitolite/install -ln
[git@git-server ~]$ ls bin/
gitolite

将admin的公钥导入git:

[git@git-server ~]$ cp /tmp/admin.pub .
[git@git-server ~]$ gitolite setup -pk admin.pub 
[git@git-server ~]$ ls .gitolite/keydir/
admin.pub

admin克隆管理仓库:

[root@git-server ~]# su - admin
[admin@git-server ~]$ git clone git@172.16.0.173:gitolite-admin
Enter passphrase for key '/home/admin/.ssh/id_rsa': 输入自己的私钥密码

[admin@git-server ~]$ cd gitolite-admin/
[admin@git-server ~/gitolite-admin]$ ls
conf  keydir
	conf	配置
	keydir	保存公钥

接需求:

需求1:
	项目名称:QQ农场
	仓库名称:qqfarm
	项目经理:zhangyi
	开发人员:zhanger zhangsan
	权限:
		项目经理是管理权限
		开发人员是读写权限
		其他人是只读权限
需求2:
	项目名称:论坛
	仓库名称:forum
	项目经理:liyi
	开发人员:lier lisan lisi
	权限:
		项目经理是管理权限
		开发人员是读写权限
		其他人没有权限

准备公钥和私钥:
	创建出来7对公钥和私钥
		私钥的密码是每个人自定义的。
[root@node1 ~]# useradd zhangyi
[root@node1 ~]# useradd zhanger
[root@node1 ~]# useradd zhangsan
[root@node1 ~]# useradd liyi
[root@node1 ~]# useradd lier
[root@node1 ~]# useradd lisan
[root@node1 ~]# useradd lisi

[root@node1 ~]# su - zhangyi
[zhangyi@node1 ~]$ ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/home/zhangyi/.ssh/id_rsa): 
Created directory '/home/zhangyi/.ssh'.
Enter passphrase (empty for no passphrase): 输入私钥密码
Enter same passphrase again: 

[zhangyi@node1 ~/.ssh]$ scp id_rsa root@172.16.0.173:/tmp/zhangyi.id_rsa
root@172.16.0.173's password: 
[zhangyi@node1 ~/.ssh]$ scp id_rsa.pub root@172.16.0.173:/tmp/zhangyi.pub
root@172.16.0.173's password: 

其他6个用户,同上。


将公钥cp到git管理仓库:
[admin@git-server ~/gitolite-admin/keydir]$ ls
admin.pub  lier.pub  lisan.pub  lisi.pub  liyi.pub  zhanger.pub  zhangsan.pub  zhangyi.pub

配置文件:
[admin@git-server ~/gitolite-admin]$ vim conf/gitolite.conf

定义用户

维度1:按照其身份
C = zhangyi zhanger zhangsan
Java = liyi lier lisan lisi

维度2:按照其项目
qqfarm = zhangyi zhanger zhangsan
forum = liyi lier lisan lisi
......

repo gitolite-admin
    RW+     =   admin

repo testing
    RW+     =   @all

@C = zhangyi zhanger zhangsan
@Java = liyi lier lisan lisi

repo qqfarm
    RW+ = admin zhangyi
    RW  = zhanger zhangsan
    R   = @all
repo forum
    RW+ = admin liyi
    RW  = @Java

将修改提交到git仓库:

[admin@git-server ~/gitolite-admin]$ git config --global user.name "niua"
[admin@git-server ~/gitolite-admin]$ git config --global user.email "niua@163.com"
	和git-server“打招呼”
[admin@git-server ~/gitolite-admin]$ git add --all
	添加所有修改
[admin@git-server ~/gitolite-admin]$ git commit -m "add all"
	提交
[admin@git-server ~/gitolite-admin]$ git config --global push.default simple
	上传基本配置
[admin@git-server ~/gitolite-admin]$ git push
	上传
Enter passphrase for key '/home/admin/.ssh/id_rsa': 
	输入admin的私钥密码

[git@git-server ~/repositories]$ ls
forum.git  gitolite-admin.git  qqfarm.git  testing.git
	结果

初始化git仓库:

[admin@git-server ~]$ mkdir init
[admin@git-server ~]$ cd init/

[admin@git-server ~/init]$ git clone git@172.16.0.173:qqfarm 
Cloning into 'qqfarm'...
Enter passphrase for key '/home/admin/.ssh/id_rsa': 
warning: You appear to have cloned an empty repository.

[admin@git-server ~/init]$ git clone git@172.16.0.173:forum
Cloning into 'forum'...
Enter passphrase for key '/home/admin/.ssh/id_rsa': 
warning: You appear to have cloned an empty repository.
	克隆
[admin@git-server ~/init]$ ls
forum  Git-init.sh  qqfarm
		初始化脚本
#!/bin/bash
git commit --allow-empty -m "init"
git push origin master
echo "create by uplooking-xxs.shenyang" > README
echo `date` >> README
git add README
git commit -m "create README file"
git push

git branch develop
git branch uat

git checkout develop
echo "branch develop" >> README
git add README
git commit -m "admin in develop change README"
git push -u origin develop

git checkout uat
echo "branch uat" >> README
git add README
git commit -m "admin in uat change README"
git push -u origin uat

>>>>>>>>>>>>>>>>>>>>>>>>>

[admin@git-server ~/init]$ chmod +x Git-init.sh 
[admin@git-server ~/init]$ cp Git-init.sh forum/
[admin@git-server ~/init]$ cp Git-init.sh qqfarm/

带入私钥密码:

[admin@git-server ~/init/forum]$ eval `ssh-agent`
Agent pid 6161
[admin@git-server ~/init/forum]$ ssh-add
Enter passphrase for /home/admin/.ssh/id_rsa:

[admin@git-server ~/init/forum]$ ./Git-init.sh
[admin@git-server ~/init/qqfarm]$ ./Git-init.sh

活干完了,可以回复邮件了。

在windows测试下:

在这里插入图片描述

在这里插入图片描述
这个名字就是和linux的一样。

在这里插入图片描述
能下载就是ok了。


维护git-server:
做好备份。

git-server保存代码的分区,底层使用raid1。
2块硬盘,raid1 mount /home

[root@git-server ~]# yum install -y nfs-utils
[root@git-backup ~]# yum install -y nfs-utils

[root@git-backup ~]# mkdir /nfs
[root@git-backup ~]# chmod 757 /nfs

[root@git-backup ~]# vim /etc/exports
/nfs    172.16.0.173(rw,sync)

[root@git-backup ~]# systemctl start nfs
[root@git-backup ~]# systemctl enable nfs

[root@git-server ~]# showmount -e 172.16.0.174
Export list for 172.16.0.174:
/nfs 172.16.0.173

写备份脚本:
[root@git-server ~]# vim git_backup.sh

#!/bin/bash
# gitolite备份脚本

nfsip="172.16.0.174"
nfsdir="/nfs"
DATE=`date "+%Y%m%d"`

#挂载nfs
if [ ! -d /backup ]
    then
    mkdir /backup
fi
df -h | grep ${nfsip}:${nfsdir} &> /dev/null
if [ $? -ne 0 ]
    then
    mount ${nfsip}:${nfsdir} /backup
fi
cd /home
tar zcf /backup/${DATE}-admin.tgz admin
tar zcf /backup/${DATE}-git.tgz git
find /backup -mtime +7 -type f -name "*.tgz" -exec rm -f {} \;

[root@git-server ~]# ./git_backup.sh 
[root@git-server ~]# cd /backup/
[root@git-server /backup]# ls
20191206-admin.tgz  20191206-git.tgz

[root@git-backup ~]# cd /nfs/
[root@git-backup /nfs]# ls
20191206-admin.tgz  20191206-git.tgz

计划任务进行备份。
git-server不可用。

[root@git-backup ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 
	改成git-server的IP

[root@git-backup ~]# /etc/init.d/network restart

[root@git-backup /nfs]# tar zxf 20191206-admin.tgz -C /home/
[root@git-backup /nfs]# tar zxf 20191206-git.tgz -C /home/

[root@git-backup /home]# useradd -u 1000 git
[root@git-backup /home]# useradd -u 1001 admin

修复完毕

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值