美文网首页GitiOS学习iOS开发
Gitlab与Xcode的无缝连接

Gitlab与Xcode的无缝连接

作者: int1987 | 来源:发表于2017-03-01 11:08 被阅读3626次

写在前面:

  • 由于项目组的人事变动,由之前的多人开发转为独自开发。个人的决策比较自由,所以我准备把项目从临时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秘钥生成

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

屏幕快照 2017-02-28 20.23.37.png
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命令有两个坑,下面会详细说明。

为Project添加Git

坑No.1
需要注意,输入commit命令后会提示输入commit message,如下图,对终端不熟悉的同学可能要抓狂了,这里需要按s键进入INSERT模式,开始输入commit message,最后按ESC,然后输入:wq退出commit message输入模式

注意:建议commit message第一行输入标题(概要),空一行再输入详细信息。当然,这是建议,如果你觉得无所谓,也可以随意输入或直接:wq跳过。

输入commit message

坑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'  //提交改动

可以看到提交成功了


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

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


Push成功

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


README正确提交
4. 脱离终端,与Xcode无缝连接

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

新增pushTest方法

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

Commit

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

Commit message

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

Push

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


Master分支

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


Pushing changes

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


提交成功

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


高亮代码片段

结语

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

相关文章

网友评论

    本文标题:Gitlab与Xcode的无缝连接

    本文链接:https://www.haomeiwen.com/subject/znjujttx.html