最近公司准备把项目放在一台新的服务器当中,要求能保留原先的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自动化部署到网站根目录也完美实现了!
© 著作权归作者所有
举报
发表评论
0/200