Git與GitLab

1. GitLab 簡介

1.1 GitLab基本概念

  • GitLab 是一個用于倉庫管理系統(tǒng)的開源項目。使用Git作為代碼管理工具,并在此基礎(chǔ)上搭建起來的web服務(wù)。
  • 可通過Web界面進(jìn)行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。
  • 可以管理團(tuán)隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫。

補(bǔ)充 Git、Gitlab與Github區(qū)別

  • Git 是一種版本控制系統(tǒng),是一個命令,是一種工具
  • Github,Gitlab等產(chǎn)品都是第三方基于git這項技術(shù)開發(fā)的
  • Github 是一個基于git實現(xiàn)的在線代碼倉庫,包含一個網(wǎng)站界面,向互聯(lián)網(wǎng)開放
  • Gitlab 是一個基于git實現(xiàn)的在線代碼倉庫軟件,你可以用gitlab自己搭建一個類似于github一樣的系統(tǒng),一般用于在企業(yè)、學(xué)校等內(nèi)部網(wǎng)絡(luò)搭建git私服

1.2 GitLab的倉庫與角色

  • Gitlab中有四種角色:Owner、Master、Developer、Reporter。
  • Gitlib中有兩種倉庫:普通倉庫、Stag/Done庫

區(qū)分方法:
命名為Publish/...._stag,即為stag庫,命名為Publish/…._done,即為done庫,其他則為普通庫。

1.2.1 普通庫與角色權(quán)限

普通庫之前互不可見,一個倉庫中各角色權(quán)限如下:

角色 人員 權(quán)限
Owner 管理員 1. 建立倉庫;
2. 為倉庫指定master;
3. 讀寫權(quán)限;
Master Master 1. 指定該倉庫下的開發(fā)角色;
2. merge分支代碼到主干,對主干代碼有讀寫權(quán)限;
3. 維護(hù)倉庫,如遷移庫、重命名等;
Developer 開發(fā)人員 1. check in 本地代碼到分支;
2. 修改分支代碼;
3. 對分支代碼有讀寫權(quán)限,對主干分支有讀權(quán)限;
Reporter 測試人員 1. 對主干和分支代碼有讀權(quán)限。

1.2.2 stag/done庫與角色權(quán)限

  • stag/done庫這兩種庫分別存放stag環(huán)境與生產(chǎn)環(huán)境的package。
  • 除管理員外和管理員指定人員外有讀寫權(quán)限之外,其他角色不可見

2. Windows安裝GitLab客戶端

  • 在Windows下安裝Git客戶端軟件,下載鏈接
  • 安裝Git客戶端:

(1)雙擊圖標(biāo), 然后按默認(rèn)選項安裝即可。
(2)安裝完成后,在開始菜單里找到“Git”->“Git Bash”,蹦出一個類似命令行窗口的
????東西,就說明Git安裝成功!


3. GitLab的使用

3.1 GitLab客戶端的使用

本地倉庫由git維護(hù)的三棵“樹”組成。

  • 第一個是工作目錄,它持有實際文件;
  • 第二個是緩存區(qū)(Index),它像個緩存區(qū)域,臨時保存你的改動;
  • 第三個是HEAD,指向最近一次提交后的結(jié)果。

常用命令總結(jié)

  • 從工作目錄到緩存區(qū)(index):git add <filename> 或git add .
  • 提交改動(從index到HEAD):git commit –m "代碼提交信息"
  • 從本地倉庫到遠(yuǎn)端倉庫:git push origin master,可以把master換成想要推送的任何分支

分支

(1) 創(chuàng)建分支并切換到該分支
??????git checkout -b <branch>
??????等同于:
??????git branch <branch>
??????git checkout <branch>
(2) 切回主分支:git checkout master
(3) 刪掉分支:git branch -d <branch>
(4) 除非你將分支推送到git服務(wù)器,不然該分支其他人look不到
??????git push origin <branch>

更新與合并

(1) 從git服務(wù)器上更新本地倉庫:git pull
??????等同于:git fetch;git merge
(2) 要合并其他分支到你的當(dāng)前分支:git merge <branch>

以上兩種情況,git都會嘗試去自動合并改動。
若存在沖突(conflicts),則自動合并失敗,此時只能靠人肉合并沖突。

git diff <source_branch> <target_branch> 查看沖突并分析解決
git add <filename>

標(biāo)簽(tag)

標(biāo)簽可以針對某一時間點的版本做標(biāo)記,常用于版本發(fā)布。
(1) 添加標(biāo)簽:git tag –a ${tagname} -m “版本發(fā)布信息”
(2) 切換到標(biāo)簽:git checkout ${tagname}
(3) 提交到git服務(wù)器:git push origin ${tagname}

替換本地改動

假如你想要丟棄你所有的本地改動與提交,可以到服務(wù)器上獲取最新的版本并將你本地主分支指向到它:
??????git fetch origin
??????git reset --hard origin/master

3.2 關(guān)聯(lián)遠(yuǎn)程倉庫

本地Git倉庫和GitLab倉庫之間的傳輸是通過SSH加密的

3.2.1 GitLab客戶端的準(zhǔn)備

3.2.1.1 設(shè)置用戶信息

單個代碼庫的用戶信息:

查看

        git config --get user.name
        git config --get user.email

設(shè)置

        git config user.name
        git config user.email 

全局的用戶信息:

查看

        git config --global --get user.name
        git config --global --get user.email

設(shè)置

        git config --global user.name
        git config --global user.email

注意事項

  • windows中的換行符為 CRLF, 而在Linux下的換行符為LF
  • 可使用git config --list查看所有配置信息,若存在core.autocrlf=true,則使用git config --global core.autocrlf false禁止自動換行
3.2.1.2 創(chuàng)建SSH Key

創(chuàng)建SSH Key。在用戶主目錄下,看看有沒有.ssh目錄,如果有,再看看這個目錄下有沒有id_rsa和id_rsa.pub這兩個文件,如果已經(jīng)有了,可直接跳到下一步。如果沒有,打開Shell(Windows下打開Git Bash),創(chuàng)建SSH Key

ssh-keygen -t rsa -C "youremail@example.com"
  • 測試SSH Key是否成功:ssh -T git@server_name
  • 如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個文件
  • id_rsa是私鑰,不能泄露出去;id_rsa.pub是公鑰,用$cat id_rsa.pub查看key

3.2.2 GitLab服務(wù)器的準(zhǔn)備

第一步
第二步
第三步

4. 建立倉庫,踏上開發(fā)

全局設(shè)置

git config --global user.name "qianqian.wu吳倩倩"
git config --global user.email "wu.qianqian@chinaredstar.com"

4.1 建Git倉庫

(1) 先在本地建倉庫,再推送至遠(yuǎn)端服務(wù)器

cd workspace
git init
git remote add origin git@server_name:group/component.git
git add .
git commit
git push -u origin master

(2) 本地已存在git倉庫

cd existing_repo
git remote add origin git@server_name:group/component.git
git push -u origin --all
git push -u origin --tags

(3) 從遠(yuǎn)端服務(wù)器克隆倉庫到本地

git clone git@server_name:group/component.git
cd component
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

注意事項

  • 如果git庫里有多個分支的話,下載的時候需要加上--bare,完整格式為
  • git clone –bare git@server_name:group/component.git
    下載完成后可以進(jìn)入目錄,使用git branch查看有多少分支,使用git tag查看有多少tags。

(4) 多次從遠(yuǎn)端更新本地倉庫

cd workspace   #workspace是工作目錄
[ -d ".git" ] || git clone ${git_repository} .
git remote update origin --prune  #更新原來已有的
git fetch    #拉取遠(yuǎn)程倉庫的
git branch -a  #展現(xiàn)分支以及分支的詳細(xì)內(nèi)容(remotes/origin/下的所有內(nèi)容)
git checkout -f ${TAG}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文以Gitlab來講解Git使用以及持續(xù)集成, 持續(xù)集成采用的是Gitlab CI. 其他代碼托管網(wǎng)站,如Git...
    x1596357閱讀 5,569評論 0 6
  • 1. 安裝 Github 查看是否安裝git: $ git config --global user.name "...
    Albert_Sun閱讀 13,863評論 9 163
  • 1 在一棵梧桐下,盛開著一朵花。它并不是很芬芳,但卻很美。美的讓人心生搖曳,美的讓人都快忘記了,這其實是一朵花。 ...
    浮生若你閱讀 856評論 1 3
  • 15歲那年,讀初三的我正處在躁動不安的青春叛逆期。 在家和父母頂嘴,覺得自己已經(jīng)是大人了,我聽不進(jìn)他們苦口婆心的教...
    華百城閱讀 425評論 0 1
  • Time will tell.
    MatsuL閱讀 294評論 0 0

友情鏈接更多精彩內(nèi)容