一篇文章學會Git

SilenceHL發表於2021-04-20

簡介

什麼是Git

Git是一個免費的開源分散式版本控制系統,也是目前為止世界上最先進的分散式版本控制系統。Git官方有一個影片介紹,可以點此觀看

什麼是版本控制系統?

一種記錄一個或若干檔案內容變化,以便將來查閱特定版本修訂情況的系統。簡單點理解就是一個可以幫助我們記錄檔案修改的系統。Git官方有一個影片介紹,可以點此觀看

什麼是分散式版本控制系統?

分散式版本控制系統時相對於集中式版本控制系統的。

集中式版本控制系統將倉庫存放在中央伺服器中集中管理,當你需要時從中央伺服器中拉取最新的版本,修改完後將修改提交給中央伺服器。這就會帶來例如當中央伺服器當機時整個版本控制系統就會崩潰;推送或者拉取一個較大的檔案時就會消耗很多時間等弊端。

分散式版本控制系統中,每個人電腦都是一個倉庫,自己的檔案可以在本地管理,當需要多人協同時只需要管理好本地倉庫與協同倉庫的版本即可

Git有什麼作用

進行原始碼管理

為什麼要進行原始碼管理

  • 方便多人協同開發

  • 方便程式碼版本控制

Git的特點

  • 分散式版本控制系統,伺服器和客戶端都有版本控制能力,都能進行程式碼的提交、合併等操作。
  • 在使用Git的時候會自動建立一個.git的隱藏資料夾作為本地倉庫

Git操作流程

  • clone:第一次從Git伺服器獲取專案
  • add:將修改新增到本地倉庫
  • commit:將修改提交到本地倉庫
  • push:將本地倉庫的修改提交到Git伺服器
  • pull:將Git伺服器中的專案獲取到本地倉庫

Git倉庫

什麼是倉庫

倉庫的英文名是repository,又被稱為版本庫。它是一個被Git管理的檔案目錄。

工作區,暫存區和倉庫

  • 工作區:對程式碼的新增,修改,刪除等操作的區域。
  • 暫存區:儲存工作區的操作的區域。
  • 倉庫區:即本地倉庫區域,會記錄完成的操作與歷史版本。

Git操作

安裝

Mac

在mac上有多種方法可以安裝Git,最簡單的事透過Xcode命令列工具安裝。

  • 透過Xcode安裝

    1.下載並安裝Xcode

    2.在終端中執行git即可,如果尚未安裝,它將提示您安裝。

  • 透過homebrew安裝

    1.安裝homebrew

    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

    2.安裝git

    $ brew install git
  • 透過安裝包安裝

    1.點選此下載最新版本

    2.下載完成後開啟安裝包,一直下一步安裝即可

Linux

在Linux發行版上安裝GIt,可以透過附帶的軟體包管理工具來安裝

  • Debian/Ubuntu

    $ apt-get install git

其他發行版本見這個連結

Windows
  • 下載安裝包

    根據作業系統位數選擇,連結

  • 安裝預設選項安裝即可

安裝完成後透過可以透過git --version檢視安裝版本

配置Git

配置檔案介紹

Git有一個git config的工具,可以設定和獲取配置,用來控制Git外觀及操作。這些變數可以存放在三個不同的位置,根據存放位置不同作用的範圍也不同。

1./etc/gitconfig:包含系統上每個使用者及其儲存庫的配置。

2.~/.gitconfig~/.config/git/config:每個使用者專屬的配置

3.config.git/config:當前使用儲存庫的git目錄,用於該儲存庫的配置

如果有相同配置項時,每個級別都會覆蓋上一個級別中的值,即:3>2>1

可以使用一下命令檢視所有設定以及設定的所屬:

$ git config --list --show-origin

常見配置

下面介紹一些常見配置

身份配置

安裝完Git做的第一件事應該是設定使用者名稱和電子郵箱。

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

使用global後,該資訊將會始終作用域Git操作上

Git編輯器配置

Git預設的編輯器是系統預設編輯器

如果要是用其他文字編輯器(例如vim),則可以執行以下操作:

$ git config --global core.editor vim
檢視配置

如果要檢視配置,可以使用git config --list命令列出Git可以找到的所有設定

你可能會看到很多配置項,找不到你想要的,這時候你可以透過git config <key>來檢視特定的配置,例:

$ git config user.name
silencehuliang

幫助

獲取方式

Git獲取幫助的方式有三種git help <verb>git <verb> --helpman git-<verb>

例如,可以透過git help config獲取config的相關幫助

如果只需要快速瞭解Git命令的可用選項也可以用-h來檢視相關幫助

例如git add -h

建立專案

1.將本地不收版本控制的目錄轉換為Git倉庫

①進入本地目錄

$ cd ~/Desktop/project

②輸入轉化命令

$ git init

此時會在當前目錄下建立一個.git目錄,裡面存放著Git倉庫中所有的必須檔案

$ ls -a
.    ..    .git

2.從其他地方克隆現有的Git倉庫

①進入我們需要存放倉庫的路徑

$ cd ~/Desktop/

②將現有的倉庫克隆下來

$ git clone https://github.com/Silencehuliang/project

###

檢視狀態

  • 可以透過git status 檢視倉庫中穩健的狀態
  • 綠色表示檔案在暫存區
  • 紅色表示檔案在工作區

可以透過git add 將工作區檔案新增到暫存區

  • 新增專案中所有檔案:git add .

  • 新增指定檔案:git add xxx.py

可以透過git commit將暫存區檔案提交到倉庫區

  • git commit -m "修改描述",其中-m引數後面跟的是對本次修改的描述
  • git commit -am "修改描述",可以透過-am來實現新增和提交合並操作

檢視歷史版本

透過git log或者git relog可以檢視歷史版本

回退版本

  • 透過版本號會退版本

      git reset --hard 版本號
  • 透過HEAD回退版本

    當工作區檔案發生了意外需要回退到上一個版本時可以透過

    `git reset --hard HEAD`
    • HEAD表示當前最新版本
    • HEAD^表示當前最新版本的前一個版本
    • HEAD^^表示當前最新版本的前兩個版本,以此類推…
    • HEAD~1表示當前最新版本的前一個版本
    • HEAD~10表示當前最新版本的前10個版本,以此類推…

撤銷修改

  • 只能撤銷工作區、暫存區的程式碼,不能撤銷倉庫區的程式碼

  • 撤銷倉庫區的程式碼就相當於回退版本操作

    • 撤銷工作區程式碼

      • 新加程式碼num3 = 30,不add到暫存區,保留在工作區

        git checkout 檔名
    • 撤銷暫存區程式碼

      • 新加程式碼num3 = 30,並add到暫存區

        # 第一步:將暫存區程式碼撤銷到工作區
        git reset HEAD  檔名
        # 第二步:撤銷工作區程式碼
        git checkout 檔名

對比版本

對比版本庫與工作區

  • 新加程式碼num3 = 30,不add到暫存區,保留在工作區
  • git diff HEAD -- xxx.py

對比版本庫

  • 新加程式碼num3 = 30,並add到暫存區
  • git diff HEAD HEAD^ -- xxx.py

刪除檔案

刪除檔案分為確定刪除和誤刪

  • 在專案中新建test.py檔案,並新增和提交到倉庫

    • 確定刪除處理:

        # 刪除檔案
        rm 檔名
        # git確定刪除檔案,對比新增檔案git add 
        git rm 檔名
        # 刪除後記錄刪除操作版本
        git commit -m '刪除描述'
  • 誤刪處理:撤銷修改即可

      # 刪除檔案
      rm 檔名
      # git撤銷修改
      git checkout -- 檔名

程式碼衝突

提示:多人協同開發時,避免不了會出現程式碼衝突的情況

原因:多人同時修改了同一個檔案

危害:會影響正常的開發進度

注意:一旦出現程式碼衝突,必須先解決再做後續開發

解決衝突

  • 原則:誰衝突誰解決,並且一定要協商解決
  • 方案:保留所有程式碼 或者 保留某一人程式碼
  • 解決完衝突程式碼後,依然需要addcommitpush,如果執行pull沒有影響,就算真正解決了衝突程式碼

補充:

  • 容易衝突的操作方式
    • 多個人同時操作了同一個檔案
    • 一個人一直寫不提交
    • 修改之前不更新最新程式碼
    • 提交之前不更新最新程式碼
    • 擅自修改同事程式碼
  • 減少衝突的操作方式
    • 養成良好的操作習慣,先pull在修改,修改完立即commitpush
    • 一定要確保自己正在修改的檔案是最新版本的
    • 各自開發各自的模組
    • 如果要修改公共檔案,一定要先確認有沒有人正在修改
    • 下班前一定要提交程式碼,上班第一件事拉取最新程式碼
    • 一定不要擅自修改同事的程式碼

標籤

  • 當某一個大版本完成之後,需要打一個標籤
  • 作用:
    • 記錄大版本
    • 備份大版本程式碼

在本地打標籤

git tag -a 標籤名 -m '標籤描述'

推送標籤到遠端倉庫

git push origin 標籤名

刪除本地和遠端標籤

  # 刪除本地標籤
  git tag -d 標籤名
  # 刪除遠端倉庫標籤
  git push origin --delete tag 標籤名

分支

  • 作用:
    • 區分生產環境程式碼以及開發環境程式碼
    • 研究新的功能或者攻關難題
    • 解決線上bug
  • 特點:
    • 專案開發中公用分支包括master、dev
    • 分支master是預設分支,用於釋出,當需要釋出時將dev分支合併到master分支
    • 分支dev是用於開發的分支,開發完階段性的程式碼後,需要合併到master分支

檢視當前分支

  git branch

建立並切換到dev分支

 git checkout -b dev

設定本地分支跟蹤遠端指定分支(將分支推送到遠端)

  git push -u origin dev

分支合併到master分支

  • 先切換到master分支

      git checkout master
  • 分支合併到master分支

      git merge dev
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章