写在前面:
- 由于项目组的人事变动,由之前的多人开发转为独自开发。个人的决策比较自由,所以我准备把项目从临时SVN服务器转移到Git上来。Git和SVN相比的优点我不必多说,我这里想转移的目的主要是两点:
1.Xcode集成的Source Control十分强大,从此告别其他的版本管理软件和终端代码,实现全程操作在Xcode中进行,方便、快捷。
2.之前的临时服务器IP不稳定(其实就是个人Mac搭建),经常需要重新确认IP地址,现在替换到一个稳定的服务器并且实现可远程访问,方便回家撸代码。
在确定以上需求之后,我找到了Gitlab,一个类似Github的版本管理系统。它和Github最主要的区别就是可以创建免费、私密的个人项目,并且安全性可以得到保障。
正文:
首先安利一下Gitlab的地址:https://www.gitlab.com/。
注册登录之类的不多说,直接进入正题。
1. 创建Project
注册登录完毕后,选择左上角菜单->“Projects”,就会提示你创建新项目,因为本文主要目的是介绍初次使用Gitlab,这里选择“new project”。

-
设置Project信息
如果是从本地上传,“import project from”下面的按钮可以先不选,只输入project name和描述,然后选择可见级别,使用Gitlab应该都是“Private”吧,Public的一般都去Github了。填写完毕点击“Creat project”。
设置Project信息
-
Project创建完成
创建完成就进入Project主页了,这时会看到下面有许多终端提示代码,一会会用到。
Project主页
2. 设置SSH
-
点击右上角头像,选择“Settings”
Settings
-
进入设置页面,选择“SSH Keys”,这里需要填写SSH Key的公钥。
屏幕快照 2017-02-28 20.15.36.png
-
生成SSH Key
为什么要生成SSH Key? 请参考:什么是SSH?
如果想和Gitlab服务器正常通信,必须使用SSH Key,服务器端存储SSH公钥,客户端存储SSH私钥。
打开终端,输入以下代码
cd ~/.ssh //定位到ssh文件夹
提示`No such file or directory'说明还没有创建ssh文件夹
mkdir ~/.ssh //创建ssh文件夹
ssh-keygen -t rsa -C "注册Gitlab的email地址" //生成SSH秘钥
注意:这里有一个坑,提示Enter file in which you save the key
的时候,是提示要保存的文件,而不是文件夹,如果输入的是文件夹,会报错。系统已经默认文件存为~/.ssh/id_rsa
,直接确认即可。
之后提示输入两次passphrase
,即设置push密码,可设置,也可省略(如果设置passphrase,每次push代码到服务器时需要密码确认)。
输入完毕后提示创建成果,我们来检查一下:
cd ~/.ssh //定位到ssh文件夹
ls -l //查看文件详情
cat id_rsa.pub //查看公钥

查看公钥后,将公钥复制出来(就是那个ssh-rsa
开头的一长串乱码,注意包含后面的邮箱地址),填写到刚刚打开的SSH Key设置页面里,并设置一个方便记忆的Title,填写完毕后,点击“Add key”,SSH Key就添加成功了。

3. 提交Project到Gitlab
- 为Project添加Git
cd "本地项目的路径"
git init //初始化Git
git remote add origin git@gitlab.com:USERNAME/PROJECTNAME.git //将"USERNAME"和"PROJECTNAME"替换为自己的用户名和项目名
git add . //注意add和"."之间的空格
git commit -m 'commit description' //提交改动到本地库
git push -u origin master //push到Gitlab
注意:git commit -m 'commit description'
和git push -u origin master
命令有两个坑,下面会详细说明。

坑No.1
需要注意,输入commit
命令后会提示输入commit message
,如下图,对终端不熟悉的同学可能要抓狂了,这里需要按s
键进入INSERT
模式,开始输入commit message
,最后按ESC,然后输入:wq
退出commit message输入模式
注意:建议commit message第一行输入标题(概要),空一行再输入详细信息。当然,这是建议,如果你觉得无所谓,也可以随意输入或直接
:wq
跳过。

坑No.2
输入git push -u origin master
命令后可以看到提示:
error: src refspec master does not match any.
error: failed to push some refs to 'git@gitlab.com:int1987/testProject.git'
这是因为没有项目说明书,所以push失败。
解决方案:
touch README //生成说明文件
git add README //添加说明文件到Git
git commit -m 'commit readme file' //提交改动
可以看到提交成功了

- Push到Gitlab
添加README后再重新输入git push -u origin master
,push项目到Gitlab,首次push会提示gitlab.com的真实性无法确定,输入yes,确定即可。之后gitlab.com就会被添加到已知服务器(可以在~/.ssh
文件夹中查看到多了一个known_hosts
文件,它就是存储已知服务器的文件)。

Push成功,可以看到改动被提交到master分支。回到Gitlab->Project,可以看到刚刚的提交记录:

进入Repository查看,可以看到README文件已经正确提交了。

4. 脱离终端,与Xcode无缝连接
接下来我们来试试脱离终端,直接用Xcode来进行版本控制操作——用Xcode打开testProject,并添加一个方法pushTest
:

选择Source Control
菜单->Commit...
,当然也可以用快捷键option + commond + c
快速打开commit功能。这就是为什么我抛弃其他版本控制软件——Xcode的快捷键操作十分方便。

添加commit message后点击Commit 2 Files
提交改动,注意这里也可以直接勾选左下角的Push to remote:
直接push到Gitlab上,当然push是一个耗时操作,不必每次都push,也可以积攒几次commit后再集中push到远程服务器。

Commit完毕,选择Source Control
菜单->Push...
。

弹出的对话框中选择要push的分支,当前是master分支,点击Push按钮。

Push需要些时间,这和你的网速和提交的内容大小有关。

Push成功后,再来Gitlab看一下是否成功,可以看到test push已经被提交。

和Github一样,Gitlab也可以直接查看提交的代码片段(高亮显示)。

结语
至此,Gitlab和Xcode的无缝连接就介绍完毕了,可以说Gitlab是非常强大且安全的,省去了搭建本地服务器的时间,方便多人、异地管理项目,特别适合中小型公司和个人开发者使用。文中若有不准确的地方,请留言指出,我会随时修改,谢谢!
网友评论