在上一篇文章中,我們已經成功安裝好 Git 並教大家如何挑選適合自己的操作介面,在這篇文章中,將會正式開始版本控制。 (以下範例皆使用 Git bash!)
如果你還不知道 Git 是什麼,歡迎先去看看我的第一篇 Git 系列文章:
Git 入門:版本控制與 Git 是什麼?【用 Git 打造你的程式時光機 & 平行宇宙】
配置使用者資訊
安裝好 Git 後,首先要做的就是利用git config 指令來設置使用者資訊。使用者資訊會被寫入版本控制資料(就是後面會提到的 commit)中,commit 產生後,裡面紀錄的作者資訊就無法修改,因此要確認是否正確。
為整個系統配置(只需一次),使用 --global
git config --global user.name "Your Name"
git config --global user.email "Your Email"
--global 參數代表為整個系統配置,因此只要設定一次就好。如果不小心打錯資訊,只需要重新輸入一次正確的指定,Git 會自動覆蓋掉前面的值~
版本控制
配置好使用者資訊後,先用 cd filefolder 指令進到要管理的資料夾,我以桌面的 NewProject 資料夾為例,輸入 cd ~/Desktop/NewProject (實際請依照你的系統調整!)
接下來,我們就正式進到 Git 的核心操作!!!
初始化儲存庫
要在資料夾內使用 git,第一步就是要初始化 git 儲存庫(repository),讓 git 可以管理這個資料夾:
git init執行後,git 會在這個資料夾底下建立一個 .git 的隱藏資料夾,所有的版本歷史、變更紀錄等相關重要資料都會存在這裡。只要看到 git bash 出現:
Initialized empty Git repository in ...

git init
代表這個資料夾成為一個 Git 的儲存庫了~在資料夾後方會看到一個 (main),這是我們初始化 git 倉庫時,系統自動建立的第一個分支(分支概念以後也會講到)。預設名稱通常會是 main,如果你的 git 是舊版,可能會叫做 master。

git 分支名稱會出現在資料夾後方
查看檔案狀態
雖然目前我們的資料夾是空的、才剛進行初始化,但我們可以先用指令查看 git 儲存庫的狀態。
git status當你執行指令會出現以下畫面:

我們可以看出幾個資訊:
- 在 main 分支上
- 還沒有 commit
- 沒東西可以 commit
現在我們在資料夾內新增一個檔案(我用 newfile.txt 為例),再執行一次 git status:

可以看到畫面多了一段:
- untracked files: ...
這段內容代表的是,git 偵測到了你的資料夾內多了一個檔案(紅色標註的 newfile.txt),而這個檔案尚未被 git 追蹤。
這時候我們可以先有的一個觀念「Git 的三個核心區域」:
- 工作目錄 Working Directory:編輯檔案的地方,所有修改、新增、刪除都發生在這裡
- 暫存區 Staging area:存放「準備被記錄的檔案」的地方
- 儲存庫 Repository:存放「被 Git 保存為正式歷史紀錄的版本」的地方
添加變更到暫存區: git add
當我們初始化一個 git 儲存庫,git 並不會主動幫我們追蹤檔案,所以要先用 git add filename 明確的告訴 git 你想管理哪些檔案。
以我的 newfile.txt 為例:
git add newfile.txt
這個指令的意思是:
把指定檔案「加入暫存區(staging area)」
接著用 git status 看一次狀態:

- changes to be committed...
這裡可以看到系統顯示多了一個新檔案(綠色標註文字),這個新檔案是 newfile.txt,這代表 Git 已經幫我們追蹤、並將這個檔案放到暫存區了。
如果我們有很多要添加到暫存區的內容,可以使用:
git add .
這個指令代表:
將工作目錄下,所有的變動(新增、修改、刪除) 全部都加到暫存區
這個指令很方便,但是如果有些特殊的檔案不希望被加進去(例如 log、.env 等),我們會需要 .gitignore 檔案,.gitignore 用來排除不想受到 git 控管的檔案。
範例:
- 直接在資料夾中新增 ".gitignore",並將要忽略的檔案寫進去。

設定 .gitignore
- 在專案資料夾內新增測試用的 test.log 與 secret.txt 檔案

資料夾內容
- 查看
git status

執行 git status,此時 git 只會看到多了 .gitignore 檔案
- 執行
git add .

git add . 會忽略 .gitignore 紀錄的內容
關於 .gitignore 其實有很多進階的篩選規則可以使用,沒辦法在這邊一一列出>< 這個階段是希望大家可以先有「並非所有檔案都要被記錄」的概念,避免在使用 git add . 時將密碼或是其他不相關的檔案一起加到暫存區。等熟悉基本操作後,未來會再寫一篇文章深入討論!!(希望我會)
保存檔案歷史節點: git commit
使用 git add 只是把內容加到暫存區,要把暫存區的內容打包成一個版本(commit),就會用到下方這個指令~~
git commit -m "變更訊息"
git commit -m 的 m 是 message 的 m 哦! 這樣記應該比較不容易忘記!
這個指令會做幾件事:
1. 將暫存區的內容存成一個版本
2. 記錄作者(就是第一步設定的 user.name)
3. 留下一段說明文字 (commit message)

git commit
看到這樣畫面,代表這次的變更已經永久的保存到 git 的歷史了~
如果這時你在打一次 git status,會看到這樣的畫面:

git status
這代表目前工作目錄與儲存庫的內容是一樣的,沒有任何未保存的變更~
到這一步,我們已經成功地進行了專案的版本控制,在未來,我們將可以回到 commit 過的任何時間點!! 這也是為何標題被我稱作「程式時光機」的原因!!
總結
讓我們快速整理一下這篇文章的重點:
- 如果初次使用 git,記得用 git config 配置使用者資訊
- git init 初始化 git 儲存庫,這樣 git 才能幫你版本控制~(每個專案都要做一次!)
- git add 將檔案加到暫存區
- git commit 將暫存區內容打包保存到儲存庫
- git status 隨時檢視檔案狀態
基本上,這幾個指令就是用 git 版本控制最常用的指令啦!! 現在你已經對 git 的操作稍有了解,可以自己建立專案、改檔案、版本控制、排除不要版本控制的檔案,但可能心裡還是有點疑惑,為何要有暫存區、存起來的 commit 到底是什麼、他怎麼幫我們版本控制??
下一篇文章,將會和大家一起探索 commit 的奧妙之處,解決你心中的滿滿疑惑~















