1. 程式人生 > 其它 >【Git從入門到精通】01-初識Git

【Git從入門到精通】01-初識Git

初識Git

筆記來源:【尚矽谷】5h打通Git全套教程IDEA版(涵蓋GitHub\Gitee碼雲\GitLab)

目錄

初識 Git

0、內容介紹

Git

  • Git 介紹:分散式版本控制工具 VS 集中式版本控制工具
  • Git 安裝:基於官網釋出的最新版本 2.31.1 安裝講解
  • Git 命令:基於開發案例詳細講解了git的常用命令
  • Git 分支:分支特性、分支建立、分支轉換、分支合併、程式碼合併衝突解決
  • IDEA 整合 Git

GitHub

  • 建立遠端庫
  • 程式碼推送 Push
  • 程式碼拉取 Pull
  • 程式碼克隆 Clone
  • SSH 免密登入
  • IDEA 整合 GitHub

Gitee 碼雲

  • 建立遠端庫
  • IDEA 整合 GitHub
  • 碼雲連線 GitHub 進行程式碼的複製和遷移

GitLab

  • GitLab 伺服器的搭建和部署
  • IDEA 整合 GitLab

1、Git 概述

Git 是一個免費的、開源分散式版本控制系統,可以快速高效地處理從小型到大型的各種專案

Git 易於學習,佔地面積小,效能極快。它具有廉價的本地庫,方便的暫存區域和多個工作流分支等特性

其效能優於 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具

1.1、何為版本控制?

版本控制是一種記錄檔案內容變化,以便將來查閱特定版本修訂情況的系統

版本控制其實最重要的是可以記錄檔案修改歷史記錄,從而讓使用者能夠檢視歷史版本,方便版本切換

1.2、為什麼需要版本控制?

個人開發過渡到團隊協作

1.3、版本控制工具

集中式版本控制工具

CVS、SVN(Subversion)、VSS.......

集中化的版本控制系統諸如 CVS、SVN 等,都有一個單一的集中管理的伺服器,儲存所有檔案的修訂版本,而協同工作的人們都通過客戶端連到這臺伺服器,取出最新的檔案或者提交更新。多年以來,這已成為版本控制系統的標準做法

這種做法帶來了許多好處,每個人都可以在一定程度上看到專案中的其他人正在做些什麼。而管理員也可以輕鬆掌控每個開發者的許可權,並且管理一個集中化的版本控制系統,要遠比在各個客戶端上維護本地資料庫來得輕鬆容易

事分兩面,有好有壞。這麼做顯而易見的缺點是中央伺服器的單點故障。如果伺服器宕機一小時,那麼在這一小時內,誰都無法提交更新,也就無法協同工作

總結

  • 優點:可以看到其他人正在做些什麼;開發者許可權控制
  • 缺點:中央伺服器的單點故障,無法提交歷史記錄

分散式版本控制工具

Git、Mercurial、Bazaar、Darcs.......

像 Git 這種分散式版本控制工具,客戶端提取的不是最新版本的檔案快照,而是把程式碼倉庫完整地映象下來(本地庫)。這樣任何一處協同工作用的檔案發生故障,事後都可以用其他客戶端的本地倉庫進行恢復。因為每個客戶端的每一次檔案提取操作,實際上都是一次對整個檔案倉庫的完整備份

分散式的版本控制系統出現之後,解決了集中式版本控制系統的缺陷:

  1. 伺服器斷網的情況下也可以進行開發(因為版本控制是在本地進行的)
  2. 每個客戶端儲存的也都是整個完整的專案(包含歷史記錄,更加安全)

優點

  • 版本控制在本地,可以斷網開發
  • 儲存完整專案,包含歷史記錄,更安全

1.4、Git 簡史

1.5、Git 工作機制

  • 工作區寫程式碼,通過git add命令新增至暫存區
  • 暫存區臨時儲存程式碼,通過git commit提交至本地庫
  • 本地庫記錄歷史記錄,通過git push推送至遠端庫

1.6、Git 和程式碼託管中心

程式碼託管中心是基於網路伺服器的遠端程式碼倉庫,一般我們簡單稱為遠端庫

  • 區域網
    • ☑️ GitLab
  • 網際網路
    • ☑️ GitHub(外網)
    • ☑️ Gitee碼雲(國內網站)

2、Git 安裝


官網地址:https://git-scm.com/

檢視 GNU 協議,可以直接點選下一步

選擇 Git 安裝位置,要求是非中文並且沒有空格的目錄,然後下一步

Git 選項配置,推薦預設設定,然後下一步

Git 安裝目錄名,不用修改,直接點選下一步

Git 的預設編輯器,建議使用預設的 Vim 編輯器,然後點選下一步

預設分支名設定,選擇讓 Git 決定,分支名預設為 master,下一步

修改 Git 的環境變數,選第一個,不修改環境變數,只在 Git Bash 裡使用 Git

選擇後臺客戶端連線協議,選預設值 OpenSSL,然後下一步

配置 Git 檔案的行末換行符,Windows 使用 CRLF,Linux 使用 LF,選擇第一個自動轉換,然後繼續下一步

選擇 Git 終端型別,選擇預設的 Git Bash 終端,然後繼續下一步

選擇 Git pull 合併的模式,選擇預設,然後下一步

選擇 Git 的憑據管理器,選擇預設的跨平臺的憑據管理器,然後下一步

其他配置,選擇預設設定,然後下一步

實驗室功能,技術還不成熟,有已知的 bug,不要勾選,然後點選右下角的 Install 按鈕,開始安裝 Git

點選 Finsh 按鈕,Git 安裝成功!

右鍵任意位置,在右鍵選單裡選擇 Git Bash Here 即可開啟 Git Bash 命令列終端

在 Git Bash 終端裡輸入 git --version 檢視 git 版本,如圖所示,說明 Git 安裝成功

3、Git 常用命令

命令 作用
git config user.name 使用者名稱 設定使用者簽名
git config user.email 郵箱 設定使用者簽名
git init 初始化本地庫
git status 檢視本地庫狀態
git add 檔名 新增至暫存區
git commit -m "日誌資訊" 檔名 提交至本地庫
git reflog 檢視歷史記錄
git reset --hard 版本號 版本穿梭

3.1、設定使用者簽名

1)基本語法

git config --global user.name 使用者名稱
git config --global user.email 郵箱

2)案例實操

全域性範圍的簽名設定

說明:

簽名的作用是區分不同操作者身份。使用者的簽名信息在每一個版本的提交資訊中能夠看到,以此確認本次提交是誰做的

Git 首次安裝必須設定一下使用者簽名,否則無法提交程式碼

‼️ 注意:這裡設定使用者簽名和將來登入 GitHub(或其他程式碼託管中心)的賬號沒有任何關係

3.2、初始化本地庫

1)基本語法

git init

2)案例實操

3.3、檢視本地庫狀態

1)基本語法

git status

2)案例實操

新增檔案前

新增檔案後

3.4、新增暫存區

1)基本語法

git add 檔名

2)案例實操

紅色表示仍在工作區,修改尚未被追蹤;綠色表示已新增至暫存區,修改被追蹤

使用命令,刪除暫存區該檔案(只是刪除暫存區,不影響工作區)

git rm --cached hello.txt

3.5、提交至本地庫

1)基本語法

# -m 表示新增一個版本日誌資訊,不寫此引數也會開啟日誌資訊的檔案框。一般帶引數
git commit -m "日誌資訊" 檔名

2)案例實操

正常操作

-m引數時

如果強制退出

3.6、修改檔案

案例實操

git 裡是按照行維護檔案的,所以修改內容其實就是之前的行刪除,修改過後的行新增進來

因此在commit之後提示資訊1 insertion(+), 1 deletion(-)

3.7、歷史版本

檢視歷史版本

1)基本語法

# 檢視精簡版本資訊
git reflog
# 檢視詳細版本資訊
git log

2)案例實操

版本穿梭

1)基本語法

git reset --hard 版本號

2)案例實操

檔案驗證當前版本號

Git 切換版本,底層其實是移動的 HEAD 指標,具體原理如下圖所示

4、Git 分支操作

4.1、什麼是分支

在版本控制過程中,同時推進多個任務,為每個任務,我們就可以建立每個任務的單獨分支。使用分支意味著程式設計師可以把自己的工作從開發主線上分離開來,開發自己分支的時候,不會影響主線分支的執行。對於初學者而言,分支可以簡單理解為副本,一個分支就是一個單獨的副本(分支底層其實也是指標的引用)

4.2、分支的好處

同時並行推進多個功能開發,提高開發效率

各個分支在開發過程中,如果某一個分支開發失敗,不會對其他分支有任何影響。失敗的分支刪除重新開始即可

4.3、分支的操作

命令 作用
git branch 分支名 建立分支
git branch -v 檢視分支
git checkout 分支名 切換分支
git merge 分支名 把指定的分支合併到當前分支

建立分支、檢視分支

1)基本語法

git branch 分支名
git branch -v

2)案例實操

切換分支

1)基本語法

git checkout 分支名

2)案例實操

合併分支

1)基本語法

git merge 分支名

2)案例實操

正常合併

衝突合併

衝突產生的原因:合併分支時,兩個分支在同一個檔案的同一個位置有兩套完全不同的修改。Git無法替我們決定使用哪一個。必須人為決定新程式碼內容

解決衝突

建立分支和切換分支圖解

master、hot-fix 其實都是指向具體版本記錄的指標。當前所在的分支,其實是由 HEAD 決定的。所以建立分支的本質就是多建立一個指標

  • HEAD 如果指向 master,那麼我們現在就在 master 分支上
  • HEAD 如果指向 hotfix,那麼我們現在就在 hotfix 分支上

所以切換分支的本質就是移動HEAD指標

5、Git 團隊協作機制

5.1、團隊內協作

5.2、跨團隊協作

6、GitHub 操作

PS:全球最大同性交友網站,技術宅男的天堂,新世界的大門,你還在等什麼?

賬號 姓名 驗證郵箱
atguiguyuebuqun 嶽不群 [email protected]
atguigulinghuchong 令狐沖 [email protected]
atguigudongfang1 東方不敗 [email protected]

6.1、建立遠端倉庫

6.2、遠端倉庫操作

命令 作用
git remote add 別名 遠端地址 起別名
git remote -v 檢視當前所有遠端別名
git clone 遠端地址 將遠端倉庫的內容克隆到本地
git pull 遠端地址別名 遠端分支名 將遠端倉庫對於分支最新內容拉下來後與當前本地分支直接合並
git push 別名 分支 推送本地分支上的內容到遠端倉庫

建立遠端倉庫別名

1)基本語法

git remote -v
git remote add 別名 遠端地址

2)案例實操

推送本地分支到遠端倉庫

1)基本語法

git push 別名 分支

2)案例實操

由於 GitHub 外網的特殊原因,會有網路延遲,等待時間可能較長,屬於正常現象。可能要多嘗試幾次,需要點耐心。當然你有工具除外

git push git-demo master

如果本地還沒有過 SSH 免密登入操作(下面內容會詳細介紹),則在執行命令後會彈出一個Connect to GitHub的提示框

點選Sign in with your browser後會自動開啟系統預設瀏覽器

如果你的 GitHub 尚未進行過任何 Git 相關授權,則會給出確認授權提示資訊,點選Authorize GitCredentialManager進行授權即可

接著會提示授權成功(如果在此之前已經對Git Credential Manager進行過授權,則直接提示此資訊)

成功推送本地分支至遠端庫

憑據管理器

在上述操作過程中,點選Authorize GitCredentialManager進行授權後,在 GitHub 設定頁面的Application選項—Authorized OAuth Apps中可以檢視到 Git Credential Manager的授權資訊

在上述過程前,本地憑據管理器中還沒有任何身份憑證資訊(沒有 Git 和 GitHub 相關的憑據資訊)

執行過上述命令等操作後,本地憑據管理器中會出現 Git 相關憑據資訊

拉取遠端倉庫到本地

1)基本語法

git pull 別名 分支

2)案例實操

克隆遠端倉庫到本地

1)基本語法

git clone 遠端庫地址

2)案例實操

首先獲取需要克隆的遠端庫地址

由於workspace下面已經存在一個同名的倉庫地址,所以直接在workspace中鍵入命令會有錯誤提示資訊

這是因為,clone命令預設幫我們建立的一個遠端倉庫名稱同名的資料夾,所以這裡我刪除了git-demo目錄

小結:clone 會做如下操作

  • 1、拉取程式碼
  • 2、初始化本地倉庫
  • 3、建立別名(預設origin

6.3、團隊內協作

如果專案之外成員想要將自己編寫的程式碼推送至遠端庫,則會提示unable to access...403

要想獲取推送的許可權,則需要該專案管理員對該成員進行邀請,將其新增至該專案中

1)邀請合作者,輸入使用者名稱,複製地址併發送給合作者

2)合作者訪問該連結,點選接受邀請,可以在其賬號上看到該遠端倉庫

接下來,就可以通過git命令對遠端庫進行克隆、拉取、提交、推送等操作了

6.4、跨團隊協作

1)合作者視角

點選Fork,將其他專案“叉”到自己賬號上

自己賬號上就有了該專案,可以清楚地看到該專案forked from xxx,即可對程式碼進行修改

修改程式碼後,點選Pull requestsNew pull request,發起拉取請求

檢視修改內容,點選Create pull request,建立拉取請求

填寫請求資訊及評論內容,點選Create pull request

建立完成

2)專案管理員視角

可以在該專案中檢視到Pull requests有一條新的記錄,可以點選下方提交資訊進行檢視

想要看到合作者修改的具體內容,可以點選提交記錄進行檢視

同時,可以對拉取請求進行審查和評論

最後,審查通過就可以對拉取請求進行合併了,點選Merge pull request進行合併

點選Confirm merge,確認合併

合併成功之後,專案成員就可以看到修改的相關內容了

6.5、SSH 免密登入

1)基本語法

# -t指定加密演算法,-C添加註釋
ssh-keygen -t rsa -C 描述

2)案例實操

本地生成 SSH 金鑰

鍵入命令,連敲三次回車即可

進入~/.ssh目錄,複製公鑰資訊

GitHub 上新增公鑰

未新增任何公鑰之前,CodeSSH會有警告提示資訊,表示目前 SSH 方式是沒有許可權的

在 GitHub 的settingsSSH and GPG keys中,點選New SSH key新增一個公鑰

id_rsa.pub即公鑰資訊貼上至Key中,Title隨意,點選Add SSH key進行新增

出現下列資訊,說明新增成功

驗證 SSH免密登入 是否可用

進入git-demo專案,點開CodeSSH,發現已經沒有警告提示資訊了,表示可用

複製 SSH 協議地址,使用clone命令克隆到本地,鍵入yes即可

接下來就是修改內容、新增暫存區、提交本地庫、推送遠端庫的操作了

這時候我們發現已經不再彈出登入授權的提示資訊,就可以推送過去了

檢視遠端庫歷史版本資訊,確認推送成功

至此,SSH 免密登入配置成功!

7、IDEA 整合 Git

7.1、配置 Git 忽略檔案

問題1:為什麼要忽略他們?答:與專案的實際功能無關,不參與伺服器上部署執行。把它們忽略掉能夠遮蔽 IDE 工具之間的差異。

問題2:怎麼忽略?

1)建立忽略規則檔案 xxxx.ignore(字首名隨便起,建議是 git.ignore)

這個檔案的存放位置原則上在哪裡都可以,為了便於讓~/.gitconfig檔案引用,建議也放在使用者家目錄下

git.ignore檔案模版內容

# Compiled class file 
*.class 
 
# Log file 
*.log 
 
# BlueJ files 
*.ctxt 
 
# Mobile Tools for Java (J2ME) 
.mtj.tmp/ 
 
# Package Files # 
*.jar 
*.war 
*.nar 
*.ear 
*.zip 
*.tar.gz 
*.rar 
 
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 
hs_err_pid* 
.classpath 
.project .settings target .idea 
*.iml 	crash 	logs,  	see 

2)在 .gitconfig 檔案中引用忽略配置檔案(此檔案在 Windows 的家目錄中)

[core]
	excludesfile = C:/Users/Archimedes/git.ignore

注意:這裡要使用正斜線(/),不要使用反斜線(\

7.2、定位 Git 程式

7.3、初始化本地庫

明顯看到,檔案顏色變紅了,代表著未被追蹤。說明 Git 已經檢測到 git-test 下檔案,但是檔案尚未被新增至暫存區

7.4、新增至暫存區

新增完畢之後,可以看到檔案顏色變綠了,代表檔案被追蹤。說明 Git 已將檔案新增至暫存區,但是尚未提交本地庫

srcmainjava下建立一個com.test.Test.java檔案

這是 IDEA 會自動檢測到該檔案,並提示是否需要將Test.java新增至暫存區

這裡先Cancel,不直接Add單個檔案,取而代之的是在整個專案上進行Add操作,這樣整個專案下檔案都可以被新增至暫存區

這時會發現,Test.java檔案變成綠色了,說明新增成功

7.5、提交到本地庫

點選Commit Diretory...之後,就可以看到暫存區的檔案,輸入日誌資訊就可以進行提交了

提交完畢之後,檔案顏色也隨之發生改變,說明 Git 已將檔案提交至本地庫

7.6、切換版本

首先修改檔案,觀察到修改的檔案顏色為藍色,表示已修改狀態,可以直接進行commit操作

點選 IDEA 左下角 Git,可以檢視歷史版本

選定某一版本,點選Checkout Reversion xxx,可以進行版本穿梭

可以看到每次版本穿梭,HEAD指標的變化

7.7、建立分支、切換分支

點選 IDEA 右下角masterNew Branch就可以建立分支了

輸入分支名,點選Create進行建立

當然,也通過專案上右鍵GitNew Branch,或者右鍵GitBranchesNew Branch同理

切換分支同理,右鍵或是右下角均可

7.8、合併分支

首先切換到hot-fix分支,修改內容後提交,再切換回master分支,同樣在右下角選擇我們需要合併的分支hot-fix,選擇Merge Selected into Current,將hot-fix分支合併至master分支上

發現內容已發生改變,並且檢視歷史版本也發生了變化

7.9、衝突合併

首先,分別切換masterhot-fix都對Test.java內容進行修改並提交

master版本資訊

hot-fix版本資訊

可以觀察到,歷史版本發生了分叉。現在將hot-fix合併至master上,提示Conflicts,說明合併出現了衝突

點選Merge進行手動合併

解決完衝突後,會提示All changes have been processed. Save changes and finish merging,說明程式碼可以正常合併,點選Apply對手動合併的程式碼進行應用

會發現檔案顏色變為正常顏色,並且歷史版本發生了改變,原來的兩個分支合併成了一個

8、IDEA 整合 GitHub

8.1、設定 GitHub 賬號

通過賬號密碼設定

開啟Settings,點選Log In via GitHub...

會自動開啟瀏覽器,進行授權確認

點選Authorize in GitHub後,會提示授權成功

看到 IDEA 裡新增了一條賬號資訊即為新增成功

通過 Token 設定

點選Log In with Token...

會彈出Add GitHubh Account框,輸入我們在 GitHub 上建立的 Token 資訊即可

如果還沒有生成過或者丟失了之前建立的 Token,可以直接點選Generate...進行自動生成,預設已勾好許可權

修改並確認無誤後,點選Generate token即可進行生成

Token 生成之後,只會在當前頁面顯示一次,需要及時複製儲存下來

將 Token 貼上至輸入框,點選Add Account即可新增

最後別忘了,一定要點選ApplyOK對設定進行儲存

8.2、分享工程到 GitHub

我們一般會先在遠端庫建立一個Repository,再將本地庫通過remote關聯到遠端庫,最後進行版本推送

或者是先在遠端庫建立一個Repository,再通過clone將遠端庫克隆至本地,最後進行版本推送

而在 IDEA 中,可以將上述步驟合成一個步驟,即通過Share將本地庫分享至 GitHub 上,非常便捷

填寫完資訊後,點選Share按鈕,IDEA 會自動幫我們建立和初始化遠端庫,並將本地庫推送至遠端庫

檢視 GitHub 是否存在該倉庫,以驗證是否分享成功

在分享過程中,可能會出現如下報錯:成功建立遠端倉庫,但是初始化推送失敗。這時就需要進行手動Push的操作了

8.3、Push 推送本地分支到遠端庫

這裡預設使用https協議進行推送,因為網路原因,很有可能推送失敗

這是可以修改遠端連線方式,點選Define remote設定新的遠端別名

然後會彈出一個重新定義遠端方式的介面,這裡使用 SSH 協議的遠端地址即可(注意:不要與原來的別名重複)

點選OK後,可以重新選擇遠端別名,這裡改為我們剛剛定義的 SSH 協議的別名:origin-ssh

檢視 GitHub 上歷史版本修改內容,推送成功

注意push是將本地庫程式碼推送到遠端庫,如果本地庫程式碼跟遠端庫程式碼版本不一致, push的操作是會被拒絕的。也就是說,要想 push成功,一定要保證本地庫的版本要比遠端庫的版本高!因此一個成熟的程式設計師在動手改原生代碼之前,一定會先檢查下遠端庫跟原生代碼的區別!如果本地的程式碼版本已經落後,切記要先pull拉取一下遠端庫的程式碼,將原生代碼更新到最新以後,然後再修改,提交,推送!

8.4、Pull 拉取遠端庫到本地

首先先修改遠端庫程式碼,然後進行如下操作

選擇 SSH 協議的別名,點選Pull進行程式碼拉取

檢視本地庫程式碼易發生變化,並且歷史版本也有了相關記錄,說明程式碼拉取成功

8.5、Clone 克隆遠端庫到本地

關閉專案,在 IDEA 選擇頁面,點選Get From VCS

填寫需要克隆的遠端倉庫地址和本地倉庫地址,點選Clone進行克隆

等待克隆完成

初次進入專案,會提示是否信任並開啟此 Maven 工程,一般選擇Trust Project

如果勾選Trust projects in xxx,則在此工作空間下所有新增專案都將被信任,不會再提示

開啟專案,確認Test.java內容無誤,歷史版本記錄正常

9、國內程式碼託管中心-碼雲

眾所周知,GitHub 伺服器在國外,使用 GitHub 作為專案託管網站,如果網速不好的話,嚴重影響使用體驗,甚至會出現登入不上的情況。針對這個情況,大家也可以使用國內的專案託管網站-碼雲

碼雲是開源中國推出的基於 Git 的程式碼託管服務中心,網址是 https://gitee.com/,使用方式跟 GitHub 一樣,而且它還是一箇中文網站,如果你英文不是很好它是最好的選擇

9.1、建立遠端庫

輸入倉庫名稱,路徑會自動與倉庫名稱保持一致,一般不改。選擇開源,點選建立即可

建立完畢會自動跳轉到該專案介面,複製下列地址以備用

9.2、刪除遠端庫

開啟專案管理倉庫設定刪除倉庫,點選刪除倉庫

輸入確認資訊,點選確認刪除

輸入密碼,進行二次確認,點選驗證,即可刪除成功

9.3、IDEA 整合碼雲

首先安裝 Gitee 的外掛

安裝完成之後,點選Apply會重新整理Settings選項,開啟Version Control,多了一個Gitee選項

這裡同樣有兩種方式,可以通過賬號密碼登入,也可以通過Token登入,操作同 IDEA 整合 GitHub

輸入完賬號密碼,點選Log In即可

如果輸入無誤,便會在介面中展示賬號資訊,點選OK儲存

9.4、分享工程到 Gitee

如果遠端倉庫已存在該名稱的專案,則會提示存在同名倉庫無法刪除,需要先刪除剛剛我們建立的git-test倉庫

提示分享成功

檢視 Gitee,確認倉庫建立成功並且推送成功

9.5、推送本地分支到遠端庫

修改內容,可以在左側導航欄Commit直接進行提交併推送

同樣可以自定義遠端地址別名,點選Push進行推送

檢視 Gitee 倉庫歷史版本記錄,確認推送成功

9.6、拉取遠端庫到本地

直接在 Gitee 上修改Test.java內容後,IDEA 中進行Pull即可

選擇我們指定的別名和分支,點選Pull進行拉取

檢視Test.java即歷史版本發生了變化,說明拉取成功

9.7、克隆遠端庫到本地

9.8、碼雲複製 GitHub 專案

匯入倉庫

點選從 GitHub / GitLab 匯入倉庫

輸入 GitHub 倉庫地址,Gitee 會自動幫我們反填倉庫名稱及路徑資訊,修改為開源或私有,點選匯入

等待片刻

匯入成功

強制同步

如果後續該工程在 GitHub 上進行了修改,可以直接點選,重新整理圖示進行強制同步

需要注意的是強制更新會覆蓋當前倉庫,這裡點選確認即可

檢視歷史版本記錄,確認同步成功

10、自建程式碼託管平臺 - GitLab

10.1、GitLab 簡介

GitLab 是由 GitLabInc. 開發,使用 MIT 許可證的基於 網路的 Git 倉庫管理工具,且具有 wiki 和 issue 跟蹤功能。使用 Git 作為程式碼管理工具,並在此基礎上搭建起來的 web 服務

GitLab 由烏克蘭程式設計師 DmitriyZaporozhets 和 ValerySizov 開發,它使用 Ruby 語言寫成。後來,一些部分用 Go 語言重寫。截止 2018 年 5 月,該公司約有 290 名團隊成員,以及 2000 多名開源貢獻者。GitLab 被 IBM,Sony,JülichResearchCenter,NASA,Alibaba,Invincea,O’ReillyMedia,Leibniz-Rechenzentrum(LRZ),CERN,SpaceX 等組織使用

10.2、GitLab 官網地址

10.3、GitLab 安裝

伺服器準備

準備一個系統為 CentOS7 以上版本的伺服器,要求:記憶體 4G,磁碟 50G

關閉防火牆,並且配置好主機名和 IP,保證伺服器可以上網

此教程使用虛擬機器:主機名:gitlab-server IP 地址:192.168.6.200

安裝包準備

Yum 線上安裝 gitlab-ce 時,需要下載幾百 M 的安裝檔案,非常耗時,所以最好提前把所需 RPM 包下載到本地,然後使用離線 rpm 的方式安裝

下載地址:

注:資料裡提供了此 rpm 包,直接將此包上傳到伺服器/opt/module目錄下即可

編寫安裝指令碼

安裝 GitLab 步驟比較繁瑣,因此我們可以參考官網編寫 GitLab 的安裝指令碼

vim gitlab-install.sh

將下列指令碼內容複製到建立的gitlab-install.sh檔案中

sudo rpm -ivh /opt/module/gitlab-ce-13.10.2-ce.0.el7.x86_64.rpm
sudo yum install -y
curl policycoreutils-python openssh-server cronie
sudo lokkit -s http -s ssh
sudo yum install -y postfix
sudo service postfix start
sudo chkconfig postfix on
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo EXTERNAL_URL="http://gitlab.example.com" yum -y install gitlab-ce

給指令碼增加執行許可權

chmod +x gitlab-install.sh

執行指令碼變綠,說明具備執行許可權

然後執行該指令碼,開始安裝 gitlab-ce。注意一定要保證伺服器可以上網

./gitlab-install.sh

耐心等待片刻

指令碼執行成功

初始化 GitLab 服務

執行以下命令初始化 GitLab 服務

gitlab-ctl reconfigure

過程大概需要幾分鐘,耐心等待…

出現gitlab Reconfigured!說明 GitLab 服務初始化成功

啟動 GitLab 服務

執行以下命令啟動 GitLab 服務

gitlab-ctl start

如需停止,執行

gitlab-ctl stop

服務啟動成功

使用瀏覽器訪問 GitLab

使用主機名或者 IP 地址即可訪問 GitLab 服務,使用主機名訪問需要提前配置一下 windows 的 hosts 檔案

首次登陸之前,需要修改下 GitLab 提供的 root 賬戶的密碼,要求 8 位以上,包含大小寫子母和特殊符號。因此我們修改密碼為 Atguigu.123456,然後使用修改後的密碼登入 GitLab

接下來,就可以用剛才修改的賬號密碼進行登入了

登入成功

GitLab 建立遠端庫

我這裡以官網 GitLab 為例,官網地址:https://gitlab.com/

官網還提供了 GitLab 自身的專案原始碼:https://gitlab.com/gitlab-org/gitlab

點選New project/repositoryCreate a project進行 GitLab 倉庫的建立

填寫專案資訊後,點選Create project即可

建立成功

IDEA 整合 GitLab

1)安裝 GitLab 外掛

2)設定 GitLab 外掛

出現相關資訊,說明新增成功

3)push 原生代碼到 GitLab 遠端庫

我們首先新增一個遠端庫別名

點選GitManage Remotes

點選+號,自定義一個遠端別名及對應遠端庫地址,點選OK

出現剛剛的記錄,說明新增遠端別名成功,點選OK

只要 GitLab 的遠端庫連線定義好以後,對 GitLab 遠端庫進行 pull 和 clone 的操作和 Github、碼雲一致,此處不再贅述