Gitlab與Xcode的無縫連接

寫在前面:

  • 由于項目組的人事變動,由之前的多人開發轉為獨自開發。個人的決策比較自由,所以我準備把項目從臨時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是非常強大且安全的,省去了搭建本地服務器的時間,方便多人、異地管理項目,特別適合中小型公司和個人開發者使用。文中若有不準確的地方,請留言指出,我會隨時修改,謝謝!

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.git的安裝 1.1 在Windows上安裝Git msysgit是Windows版的Git,從https:/...
    落魂灬閱讀 12,695評論 4 54
  • 本文以Gitlab來講解Git使用以及持續集成, 持續集成采用的是Gitlab CI. 其他代碼托管網站,如Git...
    x1596357閱讀 5,436評論 0 6
  • 離別和消失才是命運給予我們最宏觀的結局。 前幾日時大鵬和她母親來家里走動,十多年不見樣變了好多。記得小時候大鵬常跟...
    江南是一座城閱讀 609評論 3 2
  • “我不是小偷!” 福利院的寢室里,一個九歲的女孩面對眾人的質疑,眼睛紅了一圈兒。她擁有一雙水漣漣的大眼睛,靈動美麗...
    戀空1325閱讀 338評論 0 0
  • 有些家長讓孩子從小就學習繪畫、彈琴、舞蹈,就是培養孩子的藝術修養。可藝術修養是什么,如何才能培訓孩子的藝術修...
    還淚閱讀 799評論 0 1