项目开发中难免会遇到服务器出问题的突发事件,这事我也得经历,突然git服务器崩溃,据说是磁盘陈列不干活了,服务器上面的数据都没了,还好代码已经用git管理,所以也没有惊慌失措,每个同事都有本地仓库,恢复应该是没什么问题,虽说恢复代码仓库没什么问题,但对于菜鸟的我来说,还是花费了一天时间才搞定,因为之前搭建git仓库的同事离职,只能自己从网上找资料,现简单记录一下流程,详细操作网上太多大神有作品,以便下次方便查找。
参考1: git gitosis 安装CentOS下的Git服务器:Gitosis - csensix的个人空间 - OSCHINA - 中文开源技术交流社区详细介绍如何在CentOS上配置Gitosishttps://my.oschina.net/csensix/blog/184426
参考2:git 仓库迁移(裸库,没有工作区)Git - 在服务器上搭建 Githttps://git-scm.com/book/zh/v2/%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E7%9A%84-Git-%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E4%B8%8A%E6%90%AD%E5%BB%BA-Git
服务器系统: CentOS 6.4
1.安装 git gitosis
// 同时安装 python python-setuptools git
yum install -y python python-setuptools git-core
// 克隆 gitosis, gitosis 依赖 python python-setuptools
git clone git://github.com/res0nat0r/gitosis.git
cd gitosis
python setup.py install
2.配置 gitosis
// gitosis 管理者在自已电脑(不是服务器)生成 ssh 钥匙对,用于初始化 gitosis, 主要是方便以后管理成会不用频繁登录服务器
ssh-keygen -t rsa
// 上传管理员的公钥到服务器
scp ~/.ssh/id_rsa.pub root@xxx:/tmp/
#在服务器上新建一个git用户
useradd -m git
// 切换到 git 用户操作
su - git
// 用管理员的 ssh 公钥初始化 gitosis
gitosis-init</tmp/id_rsa.pub
3.管理 git 远程仓库
// git 管理员在pc上克隆 gitosis-admin 仓库
git clone git@xxx.xxx.xxx.xxx:gitosis-admin.git
//然后可以配置团队成员仓库权限
4.迁移仓库
// 从原远程仓库迁移到新远程仓库,其实就是从原服务器拷贝裸库到新服务器
[root@ixxxxZ repositories]#ls
axxxxt.git axxxxr.git bxxxxo.git
// 先打包,传输快点, 也可以整个文件夹打包
[root@ixxxxZ repositories]#tar -zcf axxxxt.git.tar.gz axxxxt.git
// 上传到新服务器
[root@ixxxxZ repositories]#scp -r axxxxt.git.tar.gz
root@yyy.yyy.yyy.yyy:/home/git/repositories/
// 新服器解包,仓库 axxxxt 迁移完成,可以用了
[git@AY130321101831825608 repositories]$ tar -zxf axxxxt.git.tar.gz
// 从本地仓库上到远程仓库, 先从本地仓库导出为裸仓库
$ git clone --bare my_project my_project.git
// 上传裸仓库到远程服务器, 也可以先打包,然后再解包
$ scp -r my_project.git user@git.example.com:/srv/git
5.填坑 python-setuptools 安装失败,因为 CentOS 6.4 太旧,python-setuptools 包获取失败,自己手去下 python-setuptools 安装包,
6. 填坑 管理员无法访问远程仓库,找到原来是 管理员的 id_rsa.pub 有多份在远程仓库,且gitosis-admin仓库下gitosis.conf 文中 [group gitosis-admin] members,中与id_rsa.pub文件名不匹配
[group gitosis-admin]
members = pcadmin
writable = gitosis-admin
7. 使用 gitosis 原困,开发团队,多个仓库可以相互隔离,人员变动可以不用频繁登录服务器修改公钥
8.据说 gitosis 项目已经废弃,改用 gitolite