GitLab實戰操做指南

1、Git原理

一、Git是什麼?

Git是目前世界上最早進的分佈式版本控制系統(沒有之一)。git

二、Git有什麼特色?

簡單來講就是:高端大氣上檔次!windows

三、GIt與SVN區別

SVN管理安全

屬於集中式版本控制系統,版本庫是集中存放在中央服務器,必須聯網才能工做,脫離局域網,採起互聯網提交大文件會比較慢bash

 

Git管理:服務器

屬於分佈式版本控制系統,根本沒有「中央服務器」,安全性高,每一個人的電腦上都是一個完整的版本庫,即電腦硬盤上會有個版本這樣,你工做的時候,就不須要聯網了。即便中央服務器出了問題,從其餘人那複製一個就行了ssh

 

 

四、Git 工做流程

通常工做流程以下:分佈式

  • 克隆 Git 資源做爲工做目錄。
  • 在克隆的資源上添加或修改文件。
  • 若是其餘人修改了,你能夠更新資源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成後,若是發現錯誤,能夠撤回提交併再次修改並提交。

下圖展現了 Git 的工做流程:gitlab

 

 

2、Git 配置

一、配置我的的用戶名稱和電子郵件地址

$ git config --global user.name "username"測試

$ git config --global user.email yourmailspa

二、在客戶端生成ssh key

  • 安裝客戶端後在桌面任意空白處右擊
  • 打開Git Base Here而後輸入下面命令
  • 打開本地git bash,使用以下命令生成ssh公鑰和私鑰對
  • ssh-keygen -t rsa -C 'xxx@xxx.com' 而後一路回車(-C 參數是你的郵箱地址)
  • 而後打開~/.ssh/id_rsa.pub文件(~表示用戶目錄,好比個人windows就是C:\Users\Administrator),複製其中的內容
  • 打開gitlab,找到Settings -->Profile -->SSH Keys--->Add SSH Key,並把上一步中複製的內容粘貼到Key所對應的文本框,在Title對應的文本框中給這個sshkey設置一個名字,點擊Add key按鈕

       

3、Git經常使用操做

一、建立一個版本庫

Ps:只是一個空目錄哦

$ mkdir mytest

 

二、經過git init命令把這個目錄變成Git能夠管理的倉庫

$ git init

Initialized empty Git repository in C:/Users/userAccount/Desktop/test/.git/

ps:目錄下會自動生成.git,誤刪,畢竟全靠它作版本管理

第一步,用命令git add告訴Git,把文件添加到倉庫:

$ git add readme.txt

執行上面的命令,沒有任何顯示,這就對了,Unix的哲學是「沒有消息就是好消息」,說明添加成功。

第二步,用命令git commit告訴Git,把文件提交到倉庫:

$ git commit -m "test add file"

[master (root-commit) 5a92835] test add file

 1 file changed, 1 insertion(+)

 create mode 100644 mytest/readme.txt

 

三、版本的操做內容操做查看

本地版本操做:(連續操做一個文件並提交好屢次)

git log日誌查看命令

$ git log

commit d9669171c9c5890fd282c40a7e7fe0c372074233 (HEAD -> master)

Date:   Thu Apr 4 14:52:23 2019 +0800

    test third version

commit 6b39a4a6ce09c472e7f9c09e50c79c78b2efee16

Date:   Thu Apr 4 14:51:11 2019 +0800

    test second version

commit 9e42e41abf01d85e163b3d63c41bf5b099920d47

Date:   Thu Apr 4 14:47:32 2019 +0800

    test first version

commit dca156cf9c72b17f5d1aaff88ebfbfc79d5b91e2

Date:   Thu Apr 4 14:46:39 2019 +0800

 

    test add file

:

 

比較直觀的方式查看

$ git log --pretty=oneline

 

四、版本回退操做

好比返回上一個版本

$ git reset --hard HEAD^

HEAD is now at 6b39a4a test second version

Git的版本是生成是十六進制生成的,個人上一版本是如截圖:

 

再查看日誌當前版本是否爲6b39a4a

 

回滾到某個指定版本

 

$ git reset --hard dca156cf

HEAD is now at dca156c test add file

再查看日誌當前版本是否爲dca156cf

 

優點:回滾很快呀

五、git status 查看狀態

好比我對readme.txt內容作了修改,再輸入git status查看狀態

 

git checkout -- file能夠丟棄工做區的修改,即撤銷修改

$ git checkout -- readme.txt

再次輸入git status 發現文件回滾到改動以前了

 

六、刪除文件操做

先增長一個文件

$ git add delete.txt

 

再刪除文件

$ rm delete.txt

 

查看文件狀態

$ git  status

On branch master

Changes to be committed:

  (use "git reset HEAD <file>..." to unstage)

        new file:   delete.txt

Changes not staged for commit:

  (use "git add/rm <file>..." to update what will be committed)

  (use "git checkout -- <file>..." to discard changes in working directory)

        deleted:    delete.txt

 

提交修改

$ git commit -m "remove test.txt"

[master cc6aa8f] remove test.txt

 1 file changed, 0 insertions(+), 0 deletions(-)

 create mode 100644 mytest/delete.txt

 

 

七、將本地倉庫和遠程倉庫相關聯

$ git remote add origin git@172.16.5.128:RefainZero/demo.git

把本地庫的全部內容推送到遠程庫

$ git push -u origin master

 

從如今起,只要本地做了提交,就能夠經過命令:

$ git push origin master

Everything up-to-date

 

八、從遠程倉庫獲取代碼

$ git clone git@172.16.5.128:RefainZero/demo.git

Cloning into 'demo'...

remote: Counting objects: 16, done.

remote: Compressing objects: 100% (5/5), done.

remote: Total 16 (delta 0), reused 0 (delta 0)

Receiving objects: 100% (16/16), done.

 

九、解決衝突

1)、先製造一個衝突

情景,readme.txt中的,文本默認是test

git status

修改本地的readme.txt中文本內容爲「20191635」

在服務器也修改了readme.txt,修改文本內容爲「就想衝突下」

2)、提交本地的代碼到遠程倉庫

在服務器執行git pull(獲取最新代碼)

 

不負衆望,果真發生代碼衝突

3)、解決文件中衝突的的部分

打開衝突的文件

 

 

4)、把衝突標記刪掉,把衝突解決正確

提交修改,並同步到遠程倉庫

$ git add readme.txt

$ git commit -m '解決衝突的測試'

[master 0feb18f] 解決衝突的測試

 

$ git push origin master

Counting objects: 8, done.

Delta compression using up to 8 threads.

Compressing objects: 100% (4/4), done.

Writing objects: 100% (8/8), 740 bytes | 740.00 KiB/s, done.

Total 8 (delta 0), reused 0 (delta 0)

To 172.16.5.128:RefainZero/demo.git

   ca9bc5e..0feb18f  master -> master

再次從服務器上獲取最新代碼,驗證是否衝突

$ git pull

Already up to date.

4、附:Gitlab顯示的提交內容

 

相關文章
相關標籤/搜索