接下來讓我們開始熟悉 Git 的操作流程。
使用 Git 的時候,我們會常看見以下四個指令:
git status
: 查詢目前目錄的「狀態」git add
:把檔案交給 Git ,讓 Git 開始「追蹤」目錄,此時內容加到暫存區git commit
:將暫存區的內容提交到儲存庫(Repository)保留git log
:檢視 Git 紀錄
以上狀態、提交,或是暫存區這些我們都會在後面慢慢了解這些代表的是什麼意思,在這裡只要先熟悉操作 Git 時,我們會常用的指令步驟。
文章中提到的工作目錄、暫存區之後也會逐一介紹分別有什麼作用。
git status
檢查狀態$ git status
透過 git status
指令,我們可以查詢現在這個目錄的狀態。
1. 如果工作目錄沒有內容時的狀態|git status
指令
👉 回饋內容顯示
nothing to commit
表示目前「沒有東西可以提交」。
2. 新增一個命名為 index.html 檔案 |touch
指令
可透過指令新增檔案,或是直接在檔案夾裡手動新增
$ touch index.html #新增一個 index.html 檔案
複習:
touch
指令代表建立、新增一個檔案
輸入指令按下 Enter 之後,可以在 git_practice 內找到一個 index.html 檔案。
3. 再次使用 git status
指令,查詢目前目錄狀態
此時回饋顯示:Untracked files 但有看到 index.html 檔案名稱
Untracked files
代表這個檔案還沒被加入 Git 版控系統,還沒開始正式被 Git 「追蹤」。
4. 將 index.html 檔案提交給 Git 控管 | git add
指令
$ git add index.html # 將 index.html 檔案提交
// git add + [檔案名稱]
在終端機輸入指令內容不會有任何輸出結果,但是我們可以再一次使用 git status
指令檢查檔案狀態。
5. 查看檔案狀態 git status
可以發現此時的狀態從 Untracked files 變成 new file 狀態。
new file
表示目前這個檔案已經被安置在暫存區( Staging Area )
暫存區也常被稱作索引(index),因此 git add
也常被稱作將檔案加入索引。
📝 補充|如果目錄內有很多檔案,想要一次全部都加入索引,那麼這時候可以使用以下指令
$ git add . # 將全部內容加入索引
.
代表全部的意思,記得在 git add 後加上空白格在輸入.
,才是正確的格式。
以下我示範新增幾個檔案,一次加入後並查看狀態:
$ mkdir css # 新增一個 css 目錄
$ cd css # 切換到 css 目錄
$ touch style.css # 新增一個命名為 style.css 的檔案
$ ../ # 回到上一層
$ mkdir js # 新增一個 js 目錄
$ cd js # 切換到 js 目錄
$ touch admin.js # 新增一個命名為 admin.js 的檔案
$ touch all.js # 新增一個命名為 all.js 的檔案
$ ../ # 回到上一層
$ touch admin.html # 新增一個命名為 admin.html 的檔案
這時候 git_practice 資料夾裡會有剛才新加入的內容
這時候我們可以透過 git add .
指令將全部加入暫存區,並檢查目前的檔案狀態
可以發現剛才新增的內容狀態都變成 new file 狀態,代表成功加入暫存區。
📝 補充| git add --all
與 git add .
的差異
有時候我們想要把全部檔案加到暫存區,也會使用 git add --all
的方式加入,那麼這兩個參數的差異有何不同呢?
git add --all
雖然指令可以把所有檔案加到暫存區,但是有時會因 Git 版本不同或執行指令時的目錄位置而產生不同的結果。
版本系統
Git 舊版本(1.x)使用 git add .
指令時,不會處理「刪除檔案」的行為。
但在新版(2.x)已經改版成不管是 git add --all
還是 git add .
指令,都會處理新增檔案、修改檔案、刪除檔案的行為。
因此現在大多使用的版本都是屬於比較新版,不會有什麼差別,但還是要了解一下版本的不同可能會有不同的執行結果。
執行指令時的目錄位置
git add .
指令|將目前所在的目錄,以及它以下的子目錄、子子目錄 ...等裡的變動都加到暫存區,但如果是在這個目錄外的東西,就不會被影響。
git add --all
指令|不管在哪一層目錄,只要是這個專案裡的東西,所有的變動都會加至暫存區。
以下來個範例:
指令新增方法跟上述一樣,就不再多說明
此時資料夾內有這些東西:
!
在 git_practice 資料夾下,one 、 two 是子目錄
情況一|在根目錄 git_practice 下使用 git add .
指令,並檢查狀態
可以發現都有成功加至暫存區(綠字 new file)
情況二|在根目錄 one 下使用 git add .
指令
假設今天我的 example.html 與 one1.html 檔案都有更動並存擋
此時我將目錄切換到 one 執行 git add .
指令,並檢查狀態
可以發現有變動過的檔案,只有 one1.html 檔案狀態改為 new file ,而 example.html 也有變動的檔案卻沒成功加入進去。
這時候我們改成使用 git add --all
指令,查看狀態
太好了!所有有變動過的檔案都成功加至暫存區了!
補充|如果今天只想將同樣的副檔名(例 .html)加至暫存區,可以輸入以下指令
$ git add *.html #將副檔名為 .html 的所有檔案加至暫存區
git add *.副檔名
了解了 git add
指令後,接下來就進入使用 git commit
指令,將檔案提交給 Git