Git 設置及基礎使用(add & commit)
前言
隨著使用 Git 一段時間了,一開始一頭霧水的操作也比較有概念了,是時候整理筆記了!
當然,為了訓練自己盡快習慣命令列介面,操作過程中全部使用命令列介面(真的不習慣的人還是有圖形化介面可以用),常用指令可以參考 Terminal 常用指令。
Git 安裝及設定
作業系統: windows 10
到 Git 官方網站進行下載並安裝。
打開 Git bash 或任何自己慣用的命令列介面。
設定
name
和email
。
如下圖所示, Git 在建立一個版本紀錄時,會給這個紀錄 「commit 編號」、「Author name」、「Author email」、建立時間和「版本訊息(commit message)」…等訊息。在多人合作的專案中,當需要對特定版本進行討論時,知道版本建立人的資訊就非常的重要。「Author name」是希望讓其他人知道的稱呼方式、「Author email」則是聯絡資訊。通常不會頻繁更換這兩個資訊,所以可以直接用全域(
--global
)設定即可。如果有傳遞--global
參數,只需要設定這一次,之後都會直接套用此資訊。1
2
3
4
5
6# 不限執行目錄
git config --global user.name "想顯示的名稱"
git config --global user.email "想顯示的聯絡方式"
# 完成後可執行以下命令來檢查設定結果
git config --list備註:如果特定專案想用不同的名字或電子郵件,只需要在該專案目錄內執行不加
--global
參數的命令進行設定即可。
為專案建立 Git repository
當我們打算使用 Git 來追蹤專案時,只需要進入該專案的資料夾(根目錄)並執行:
1
git init
它會在當前目錄裡建立
.git
資料夾(隱形資料夾),並在裡面紀錄專案的版本紀錄。如果想在當前目錄建立新的專案資料夾並追蹤,執行以下指令:
1
git init <folder_name>
它會在當前目錄建立新資料夾,並在資料夾內建立
.git
資料夾(隱形資料夾)來追蹤專案。
一個 Git repository 原則上會追蹤資料夾內的每個檔案(除了 ignore 清單),所以要注意不要在 repository 裡建立另一個 repository。
如果要刪除整個專案的追蹤紀錄,只要刪除
.git
資料夾即可。
什麼是 commit?
Git commit 類似「存檔」的動作,他會紀錄檔案的「快照」。因為是快照,所以它可以將版本進行比較、回復、合併…等操作。
- 不同 commit 間的比較,就是比對兩個版本「快照」不同的地方。
- 「回復成之前的版本」就是讓檔案回到指定版本快照的樣子。
- 「合併」就是將指定的幾個版本中不同的地方都保留,並留下新的快照。
Git status 說明
三種 status
要使用 Git 來做版本追蹤,首先要知道被追蹤專案裡的檔案處於哪種狀態?
Git repository 會將專案裡的所有檔案分成以下幾種狀態 ——
- Untracked files:Git 尚未追蹤的檔案。沒有提交(commit)過、也還沒用
git add
指令加入追蹤清單。 - Unstaged files:編輯中的檔案,還沒有打算把當下進度「拍照」。
- Staged files:編輯告一段落,決定把檔案當下進度進行「快照」。
- Committed:版本「快照」完成,並留下該版本的相關訊息。
不同的檔案可能處於不同的狀態,可以用以下指令來查看專案中檔案處於哪種狀態。
1 |
|
git status 指令
執行 git status
指令後會列出尚未進行提交(commit)的檔案清單,並分成三個部分(有內容的才會顯示) ——
- Changes to be committed:即已經用
git add
加入等待提交的檔案清單。 - Changes not staged for commit:即已追蹤的檔案(以前提交過),目前編輯中,還沒使用
git add
改變狀態的清單。 - Untracked files:即尚未追蹤的檔案(沒有提交過),也還沒使用
git add
開始追蹤的清單。
Untracked files 對 Git 版本管理來說是「還不存在」的檔案,因為還沒告訴 Git 去關注檔案的異動。與已追蹤的檔案相比,執行某些指令時會被 Git 忽略。
建立 commit (add & commit)
接下來要介紹的兩個指令可以讓檔案在不同的 status 中移動。初學階段最常用到的兩個指令分別是 git add
跟 git commit
。
git add 指令
git add 作用:把檔案加入等待「快照」的清單中。如果再次執行 git status
,會發現指定檔案已經從 Unstaged files 清單移到 Staged files 清單中了。
Git 每次建立新版本時,並不限於「一個」檔案的快照,而是可以一口氣幫多個檔案進行「快照」。使用 git add
指令的目的就是將指定的檔案加入等候「快照」的清單中。使用 git add
指令時,須將檔案的副檔名一併寫上。
1 |
|
當我們想要將 Unstaged files 清單中的所有檔案一口氣加到 Staged files 清單時,可以執行另一個指令:
1 |
|
git commit -m 指令
git commit 作用:為這次建立的新版本進行快照,並添加說明訊息。執行這個指令會將 Staged files 清單中的所有檔案進行「快照」、加入版本資訊(編號、作者資訊、說明訊息、時間…等),完成後 Staged files 清單中會恢復空白狀態。
Git 預設的文字編輯器是 Vim ,他是一個對初學者來說相對不友善的工具(但很多 coding 大大很愛用),如果沒有使用過這個工具,可能會連怎麼輸入或怎麼離開都不知道。當我們輸入 git commit
時,它會自動開啟 Vim 來讓你輸入 commit message ,為了避免初學時期碰到「進退兩難」的情況,通常會先使用 git commit -m
指令替代。
1 |
|
加入 -m
這個參數,可以讓我們在進行 commit 指令的同時,直接加入「單行」的 commit message ,不會另外跳出 Vim 介面來進行編輯。
這時,如果我們執行 git log
查看版本紀錄,就會發現多了一筆最新加入的 commit 版本了!
變更預設文字編輯器
如前面說明提到,使用 git commit
指令會跳出當初在安裝 Git 時選定的文字編輯器(預設是 Vim)。如果想變更成其他文字編輯器,可以到 Github 官方文件找到想使用的編輯器,並在命令列介面輸入右邊提供的指令即可。
Git 指令練習
這個練習只用到了上面介紹的指令,也是初學階段最常用到的指令。可以先點開連結試著做一次,如果遇到問題再參考下面列出的作法。
文章內容如有錯誤,歡迎留言討論!
本 Blog 上的所有文章除特别聲明外,均採用 CC BY-SA 4.0 協議 ,轉載請註明出處!