不可不知的版本控制系統Git No.1-本地數據庫中Git可以做到的事情?(上)

Git的簡介

在大多數的情況下,工作時會不斷地更新自己的資料,可能從index1 0824.html→index1 0831.html→index1 0905.html等等,不會刪除舊檔案,以便之後有問題可以去查看,但當更新10次、20次時,並不會記得每次更新都更新了甚麼內容,Git就是來解決這種問題的,透過Git來做版本控制,知道每次更新的內容,誰在甚麼時間去做了修改。

安裝Git

Git安裝網址

安裝後,找到並開啟 git Bash,就會有一個類似命令提示字元的視窗如下:

Git操作流程

Git本地數據庫

在操作Git的過程中,會發現檔案上傳到遠端數據庫(通常是GitHub),是需要經過幾個檔案儲存區域,才能成功上傳,下面利用六角學院流程圖加上我自己的理解來解釋,每個區域的工作是什麼。

上傳到遠端數據庫前的指令碼

  • 確認安裝的Git版本

    1
    2
    $ git version (直接按Enter)
    git version 2.24.0.windows.2 (Git Bash顯示的Git版本)
  • 創建本地數據庫前的基本指令碼介紹

    • cd 檔案路徑 →前往該檔案
    • mkdir 資料夾名稱 →創建資料夾
    • touch 檔案名稱 →創建檔案
    • clear 清空目前所有指令碼及回饋紀錄

    更多基本指令碼參考:
    高見龍-Git 教學:終端機及常用指令介紹
    Zed Shaw-Command Line Crash Course

初始化

  • 設定使用者的 Email 信箱以及使用者名稱

    1
    2
    $ git config --global user.name "Celeste"
    $ git config --global user.email "celeste@email.com"
    • 查詢使用者的 Email 信箱以及使用者名稱建立明細
      1
      git config --list
  • 初始化資料夾,建立Git環境

    1
    $ git init

工作目錄區

  • 工作目錄區(Working directory)的檔案,尚未上傳到索引區(Staging Area)內,下面有圖示↓

    • 查詢檔案狀態
      1
      $ git status
    • 建立檔案 index.html
      1
      $ touch index.html
    • 建立檔案後,查詢狀態
      1
      $ git status  
      會顯示Untracked files:...
    • 建立資料夾 css/,並在資料夾裡創建檔案
      1
      2
      3
      mkdir css
      cd css
      touch all.css
      比較創建資料夾
      1
      2
      mkdir js
      cd js
    • 創建資料夾後查詢狀態
      Untracked files裡只會顯示index.htmlcss/,而空資料夾js/不會被追蹤。
  • 工作目錄區(Working directory)的檔案,上傳到索引區(Staging Area)內,下面有圖示↓

    • 將檔案從工作目錄區(Working directory)上傳到索引區(Staging Area)

      • 全部上傳

        1
        $ git add .
      • 部分檔案上傳

        1
        $ git add index.html
      • $ git add後,查詢狀態

        1
        $ git status  

        會顯示Changes to be committed:...

    • 檔案資料新增、修改後(尚未再次上傳到索引區),想要回復到未修改前(上次上傳到索引區的檔案內容)的狀態
      這個檔案之前一定要有過上傳到索引區,並且回復的檔案內容也是上次上傳到索引區的內容。

      • 部分還原

        1
        $ git checkout index.html

        或是

        1
        $ git restore css/all.css
      • 全部還原

        1
        $ git checkout .

        或是

        1
        $ git restore .

      其實在提交到索引區之後,再去修改檔案內容,再透過$ git status查詢狀態後,會發現Git Bash會出現提示use "git restore <file>..." to discard changes in working directory,讓使用者知道可以使用$ git restore來刪除工作檔案中有更變動的地方。

索引區

  • 索引區(Staging Area)的檔案,上傳到本地數據庫(Local Repository),下面有圖示↓

    • 上傳
      1
      $ git commit -m'註解'
    • 查詢commit紀錄
      1
      $ git log
    • (在有了一次commit紀錄之後)在工作目錄區修改檔案並且上傳(git add)到索引區後,發現上傳檔案內容有誤,想要回復到未上傳到索引區的狀態。

      • 取消上傳到索引區
        1
        $ git reset HEAD index.html
        或是
        1
        $ git restore --staged css/all.css

      特別注意,$ git reset HEAD$ git restore --staged都只是將檔案回復到未上傳的狀態,並非回復到修改前的狀態,如果要回復到上一次(未修改前)的檔案狀態要再使用$ git checkout或是$ git restore

在Git不需要被追蹤的檔案

有些比較機密或者是編譯過程中產生的暫存檔之類的,其實是不需要進入版控(Git)的,哪些資料不需要進入版控的可以參考gitignore,裡面有許多不需要進入版控檔案的建議。

如何創造出不進入版控的檔案

1
$ touch .gitignore

在編輯器上編輯這個.gitignore的檔案,將不需要進入版控的檔案放進去裡面。

1
2
3
4
5
6
7
8
9
*.html

css/
all.css

.sass-cache/
*.css.map
*.sass.map
*.scss.map

參考資料:
高見龍-Git 教學
六角學院Git免費影音