【工具篇】版本控制软件:Gogs
Gogs
到目前为止,我们已经学会了如何在本机利用git进行文件版本管理,但是如果要想进行多人协作,我们就必须使用远程仓库。将本地仓库的数据同步到远程仓库,实现多人协作开发。
目前比较热门的代码托管社区:GitHub,网址:https://gtihub.com ,提供了免费的远程git仓库功能。不过网速不是特别流畅。 在国内,有很多的公司使用oschina提供的git服务:码云, https://gitee.com ,当然,我们也可以自己来搭建远程仓库。目前学校服务器中搭建了一个git私服,其地址为:http://192.168.50.33:10080
搭建远程仓库服务
GitHub是世界最大的代码托管库,但是如果你想要设置私人仓库,是要收费的。而且速度不太好。因此一般公司都会自己搭建Git私服。 现在主流的私服架构有:GitLab、Gogs等
开源中国的码云就是使用GitLab搭建的,我们学校的私服使用的是Gogs,搭建起来比GitLab要简单的多,所以我们使用Gogs来搭建。
安装mysql
gogs底层的管理需要以来数据库,可以是mysql,也可以是其他一些常用数据库,推荐mysql
略,以前学过
安装git
用命令:yum install -y git 安装
安装gogs
1) 创建git用户
adduser git
切换到git用户
su git
2) 下载gogs包并解压
可以到官网下载
1 | tar -zxvf gogs_0.11.86_linux_amd64.tar.gz |
解压后出现目录:
3) 导入Sql数据
进入gogs目录。查看:
要执行的脚本就在scripts目录中:
执行命令:
1 | cd scripts |
然后输入mysql密码即可
执行完后,对新增一个名为gogs的数据库。
4) 创建新的数据库用户
用root用户登入mysql
1 | mysql -uroot -p |
然后执行以下命令创建gogs数据库用户
1 | create user 'gogs'@'localhost' identified by 'gogs'; //第一个gogs是用户名,第二个gogs是密码 |
1 | grant all privileges on gogs.* to 'gogs'@'localhost'; |
1 | flush privileges; |
5) 运行gogs
退回到gogs根目录,运行脚本:
./gogs web
可以看到以下信息:
启动成功,监听的是3000端口
gogs 后台运行:
1 | $nohup ./gogs web & |
6) 访问管理页面
在浏览器中访问:http://192.168.154.133:3000
首次运行,会让我们进行一些设置:
数据库设置:
基本设置:
其它设置,可选,不设置的话需要注册新的用户信息
完成后,熟悉的页面出现了:
访问远程仓库
注册并登录
大家自己注册并登录:
创建新的仓库
在页面左侧,选择创建新的仓库
填写仓库信息:
仓库创建完毕,可以看到,如果我们要与远程仓库同步,这里支持两种不同的通信协议,ssh和http。当我们选中一种协议后,后面会出现对应的远程仓库地址。
具体用那种协议要看企业团队,一般用HTTP协议的比较多,因为简单。
如果处于安全一般会使用ssh协议。但是要使用SSH协议进行同步,你就必须生成SSH密钥,并添加到当前仓库的许可列表中!接下来了解下SSH协议。作为开发人员我们不需关注这个协议,重点是使用git工具进行代码的远程操作。
SSH协议
什么是ssh
SSH是英文Secure Shell的简写形式。通过使用SSH,你可以把所有传输的数据进行加密,相对于HTTP协议更安全。
使用SSH,还有一个额外的好处就是传输的数据是经过压缩的,所以可以加快传输的速度。SSH有很多功能,它既可以代替Telnet,又可以为FTP、Pop、甚至为PPP提供一个安全的”通道”。
如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。
最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为Linux系统的标准配置。
创建SSH密钥
Git-bash中已经集成了ssh功能,所以我们只需要简单的命令,即可生成密钥:ssh-keygen -t rsa
一路回车向下走,不要输入任何内容即可!
执行命令完成后,在window本地用户.ssh目录C:\Users\用户名.ssh下面生成如下名称的公钥和私钥:
添加SSH密钥到git私服
选择用户,个人设置:
点击SSH密钥设置,并添加密钥:
密钥的内容,就是刚刚生成的两个密钥中的公钥:id_rsa.pub,用文本编辑工具(EditPlus)打开,并且复制内容即可。
将这段公钥添加到用户,这就说明,这台公钥的机器具备了访问这个git账号中的远程仓库的权限!因此一定要慎重添加。不能随意让别人操作你的仓库!!
推送远程仓库
通过控制面板,回到仓库页面,发现下面有一段帮助信息:
关联远程仓库:
1 | git remote add origin ssh://git@192.168.50.33:10022/fangqyou/hello-git.git |
推送本地仓库到远程仓库的master分支:
1 | git push -u origin master |
需要注意的是:git remote add origin 后面紧跟的,其实是上面的仓库地址信息
执行命令,发现有提示信息:
第一次推送,会有提示信息,我们输入yes:
推送成功!此时登录远程仓库,刷新页面,可以看到数据已经推送,并且与本地仓库完全一致:
从现在起,只要本地作了提交,就可以通过命令:
git push origin master
把本地master分支的最新修改推送至GitHub,现在,你就拥有了真正的分布式版本库!
克隆远程仓库
现在,假设一个新的成员要加入我们的开发队伍,那他首先要做的第一件事情,一定是从远程仓库获取所有代码。此时就可以使用克隆动作。
克隆远程仓库:就是从远程把仓库复制一份到本地,克隆后会创建一个新的本地仓库。
我们随意找到一个目录D:\test\world:
打开控制台,输入命令:git clone 远程仓库地址
远程仓库地址可以在仓库页看到:
输入命令:
查看目录:
内容:
查看状态:
OK,你已经与远程仓库完全一致了,开始你的工作吧!
拉取远程仓库数据
现在如果有人也向远程仓库推送了代码,那么当我们就需要拉取 远程仓库的最新代码到本地:
我们可以先手动修改远程仓库数据,模拟他人的提交:
在本地拉取最新代码,使用git pull 命令
查看readme文件:
内容已经与远端保持一致。
总结
注意:
1) 如果要使用SSH协议与远程仓库同步,就必须先在本地生成公钥和私钥,然后将公钥添加到远程的SSH列表
2) 如果已经有本地仓库,并且想要与远程仓库关联,一般需要两步:
a) 通过git remote add origin + 远程仓库地址 进行关联
b) 通过git push -u origin master推送本地仓库修改到远程仓库
3) 如果没有本地仓库,先创建远程仓库,然后通过git clone + 远程仓库地址 进行克隆并创建本地仓库