菜单 学习猿地 - LMONKEY

VIP

开通学习猿地VIP

尊享10项VIP特权 持续新增

知识通关挑战

打卡带练!告别无效练习

接私单赚外块

VIP优先接,累计金额超百万

学习猿地私房课免费学

大厂实战课仅对VIP开放

你的一对一导师

每月可免费咨询大牛30次

领取更多软件工程师实用特权

入驻
2484
2

Git 仓库迁移至其他服务器并实现 hooks 自动化部署

原创
05/13 14:22
阅读数 1803

最近公司准备把项目放在一台新的服务器当中,要求能保留原先的commit记录,需要把git项目完整的迁移过去。这里总结了下我的迁移过程,希望能给大家一些帮助。(假设192.10.0.1是旧服务器,192.10.0.2是新服务器)

一:git仓库迁移

1.把需要迁移的项目克隆一份至本地电脑上。

//从原地址克隆一份裸版本库,比如原本托管在旧服务器的私有仓库
//–bare 创建的克隆版本库都不包含工作区,直接就是版本库的内容,这样的版本库称为裸版本库。
git clone --bare ssh://git@192.10.0.1/home/git/test.git

2.到新的 Git 服务器上创建一个新项目。

//切换git用户,没有需要创建git用户
su - git
//进入git家目录
cd /home/git
//创建项目
mkdir test.git
//初始化一个裸仓库
git init --bare test.git

3.切换到本地电脑,以镜像推送的方式上传代码到新的服务器上。

//进入第一步复制下来的test.git 项目
cd test.git
//以镜像推送的方式上传代码到新的服务器上。
//请确保已经添加了公钥到新的机器上
git push --mirror ssh://git@192.10.0.2/home/git/test.git

4.删除本地电脑的test.git 项目。

//rm -rf test.git

5.从新的git仓库中clone项目到本地。

git clone ssh://git@192.10.0.2/home/git/test.git

至此,git项目完整的迁移到了新的服务器上。

二 hooks自动部署到网站根目录

1.把项目clone至本地根目录

cd /var/www/html             //进入网站上级目录
git clone /home/git/test.git  test //克隆test.git仓库到test网站根目录
chmod -R 777 test            //给网站根目录设置权限
chown -R git:git test        //将git用户权限设置到test根目录上

2.设置钩子

cd /home/git/test.git/hooks/
vim post-receive
//将以下内容写入到 post-receive中,并给post-receive设置可读写权限

#!/bin/bash
IS_BARE=$(git rev-parse --is-bare-repository)
if [ -z "$IS_BARE" ]; then
echo >&2 "fatal: post-receive: IS_NOT_BARE"
exit 1
fi
unset GIT_DIR
DeployPath="/var/www/html/test"  //你的网站根目录
cd $DeployPath
git fetch --all
git reset --hard origin/master

至此hooks自动化部署到网站根目录也完美实现了!

git

发表评论

0/200
2484 点赞
2 评论
收藏
为你推荐 换一批