前言

        本地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的仓库目录里面,项目迁移就完成了。


参考资料:

1.gogs: 如何恢复repository  

2.GOGS代码仓库迁移教程

3.   一起玩树莓派3+使用Gogs搭建Git 服务

4.gogs官网


Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐