GitLab實戰操作指南


一、Git原理

1、Git是什么?

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

2、Git有什么特點?

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

3、GIt與SVN區別

SVN管理

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

 

Git管理:

屬於分布式版本控制系統,根本沒有“中央服務器”,安全性高,每個人的電腦上都是一個完整的版本庫,即電腦硬盤上會有個版本這樣,你工作的時候,就不需要聯網了。即使中央服務器出了問題,從其他人那復制一個就好了

 

 

4、Git 工作流程

一般工作流程如下:

  • 克隆 Git 資源作為工作目錄。
  • 在克隆的資源上添加或修改文件。
  • 如果其他人修改了,你可以更新資源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果發現錯誤,可以撤回提交並再次修改並提交。

下圖展示了 Git 的工作流程:

 

 

二、Git 配置

1、配置個人的用戶名稱和電子郵件地址

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

$ git config --global user.email yourmail

2、在客戶端生成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按鈕

       

三、Git常用操作

1、創建一個版本庫

Ps:只是一個空目錄哦

$ mkdir mytest

 

2、通過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

 

3、版本的操作內容操作查看

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

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

 

4、版本回退操作

比如返回上一個版本

$ 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

 

優勢:回滾很快呀

5、git status 查看狀態

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

 

git checkout -- file可以丟棄工作區的修改,即撤銷修改

$ git checkout -- readme.txt

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

 

6、刪除文件操作

先增加一個文件

$ 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

 

 

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

$ 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

 

8、從遠程倉庫獲取代碼

$ 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.

 

9、解決沖突

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.

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM