初步了解

  • 關於Gitlab

Gitlab是一個利用Ruby on Rails開發的開源應用程式,實現一個自代管的Git專案倉庫,可通過Web介面進行存取公開的或者私人專案。

它擁有與GitHub類似的功能,能夠瀏覽原始碼,管理缺陷和注釋。可以管理團隊對倉庫的存取,它非常易於瀏覽提交過的版本並提供一個檔案歷史庫。團隊成員可以利用內建的簡單聊天程式(Wall)進行交流。它還提供一個代碼片段收集功能可以輕鬆實現代碼復用,便於日後有需要的時候進行尋找。

GitLab要求伺服器端採用Gitolite搭建(為了方便安裝,現已經用gitlab-shell代替Gitolite)。

  • 關於Git

Git是一個分佈式版本控制系統。分佈式的意思是,每個人電腦上都是一份完整的代碼庫,包含了所有的代碼提交歷史。 由於Git分佈式的特點,在沒有網絡的情況下,依然可以自由地將代碼提交的本地的代碼庫中,等網絡恢復後再推送到服務器,開發更加靈活和自由。

重要概念:本地一個代碼庫,對本地文件的所有操作,最後都是提交到這個代碼庫中。同時可以設置多個遠程(remote,默認的remote通常用origin表示),當你要將代碼更新到服務器上時(稱作push),就通過設置的remote,更新到指定的服務器。

  • 關於多個remote:例如需要同時將代碼同步到多個代碼管理倉庫,例如Github 和自己公司中內網的Gitlab。那麼可以將默認remote 設置為公司自己的源碼管理服務器,同時設置另外一個remote為Github。這樣即可以將代碼提交到自己公司的Gitlab,同時也可以提交到Github。

  • 一些術語

  • Fetch(獲取),從遠程代碼庫更新數據到本地代碼庫。注意:Fetch只是將代碼更新到本地代碼庫,你需要檢出(check out)或與當前工作分支合併(merge)才能在你的工作目錄中看到代碼的改變。

  • Pull(拉取),從遠程代碼庫更新數據到本地代碼庫,並與當前工作分支合併,等同於Fetch + Merge。

  • Push(推送),將本地代碼庫中已提交(commit)的數據推送到指定的remote,沒有commit 的數據,不會push

  • HEAD,指向你正在工作中的本地分支的指針

  • Master分支:主分支,所有提供給用戶使用的正式版本,都在這個主分支上發布。 關於分支管理的擴展閱讀

  • Tags(標籤):用來記錄重要的版本歷史,例如里程碑版本

  • Origin:默認的remote的名稱

  • Git clone(克隆版本庫):從服務端將項目的版本庫克隆下來

  • Git init(在本地初始化版本庫):在本地創建版本庫的時候使用

  • 工作流程

  • 對代碼進行修改

  • 完成了某項功能,提交(commit,只是提交到本地代碼庫),1-2可以反復進行,直到覺得可以推送到服務器上時,執行3

  • 拉取(pull,或者用獲取fetch 然後再手動合併merge)

  • 如果存在衝突,解決衝突

  • 推送(push),將數據提交到服務器上的代碼庫

  • Gitlab 可以做什麼

Gitlab 是Git 服務端的集成管理平台,提供了:

  1. 代碼託管服務

  2. 訪問權限控制

  3. 問題跟踪,bug的記錄、跟踪和討論

  4. Wiki,項目中一些相關的說明和文檔

  5. 代碼審查,可以查看、評論代碼

Last updated