前言
本地git仓库是以项目文件和.git的文件夹和形式保存的,而服务器端只有git的文件,记录各种版本信息,没有具体的项目文件。假如服务器端的git服务器崩溃了,如何还原git仓库呢?又或者我想把其他git网站的仓库迁移到自己搭建的git服务器应该怎样做?本文就这个问题进行详细探讨。
一、利用gogs搭建自己的git服务器。
利用wget 下载gogs到服务器上。运行./gogs web 。在服务器上打开浏览器,访问0.0.0.0:3000网址登录gogs的配置页面,输入局域网的网址,ssh的端口号要修改成其他端口号,不然22端口号会冲突。我的配置信息如下:
APP_NAME = Gogs
RUN_USER = git
RUN_MODE = prod
[database]
DB_TYPE = sqlite3
HOST = 127.0.0.1:3306
NAME = gogs
USER = git
PASSWD =
SSL_MODE = disable
PATH = data/gogs.db
[repository]
ROOT = /home/git/gogs-repositories
[server]
DOMAIN = 192.168.0.151
HTTP_PORT = 3000
ROOT_URL = http://192.168.0.151:3000/
DISABLE_SSH = false
SSH_PORT = 2222
START_SSH_SERVER = true
OFFLINE_MODE = false
[mailer]
ENABLED = false
[service]
REGISTER_EMAIL_CONFIRM = false
ENABLE_NOTIFY_MAIL = false
DISABLE_REGISTRATION = false
ENABLE_CAPTCHA = true
REQUIRE_SIGNIN_VIEW = false
[picture]
DISABLE_GRAVATAR = false
ENABLE_FEDERATED_AVATAR = true
[session]
PROVIDER = file
[log]
MODE = file
LEVEL = Info
ROOT_PATH = /home/git/gogs/log
[security]
INSTALL_LOCK = true
SECRET_KEY = aSjWkFDGurOZ07e
重点的配置是在局域网ip和ssh上
[server]
DOMAIN = 192.168.0.151
HTTP_PORT = 3000
ROOT_URL = http://192.168.0.151:3000/
DISABLE_SSH = false
SSH_PORT = 2222
START_SSH_SERVER = true
OFFLINE_MODE = false
如何ssh没有打开或者端口号是22都有可能有问题,在git clone 的时候会出现很多莫名其妙的问题,提示用户不存在或者仓库不存在,还有database也应该配置成git用户。
配置完成后可以利用局域网的网址来访问你的git服务器,第一个注册的用户将成为管理员,比其他普通用户多一个控制面板,可以对仓库和用户进行各种管理,也能看到很多配置项。
二、新建代码仓库
如果你要迁移的项目名称是test1.git,那么你在建立仓库的时候也应该建立同样的名称,不然就算你把要迁移的仓库拷贝到仓库里面,在gogs的仓库页面也找不到这个项目。建立仓库只需要点击gogs页面的右上角的加号就可以添加仓库。
三、迁移git仓库到gogs
首先你把gogs里面的test1.git文件夹删除掉,然后把要迁移的test1.git文件拷贝到gogs的仓库目录里。我的仓库目录是:"/home/git//gogs-repositories/用户名/",这时候,你登录gogs的管理页面就能看到迁移的test1项目已经迁移成功。同样适用于gogs服务器崩溃了,你重新配置gogs服务器,那么仓库列表也会丢失,这样你也可以通过同样的方式恢复你的git仓库。如果想把开源项目也迁移到自己的gogs服务器,可以通过git clone拷贝别人的项目,然后里面有一个.git的目录,这个其实和服务器上的仓库内容是一模一样的,你只需要在gogs添加这个项目,然后把这个.git目录名称改成"项目名称.git",并扔进gogs的仓库目录里面,项目迁移就完成了。
参考资料:
4.gogs官网