複習一下上一篇提到 git 四個常使用的指令:
git status
: 查詢目前目錄的「狀態」git add
:把檔案交給 Git ,讓 Git 開始「追蹤」目錄,此時內容加到暫存區git commit
:將暫存區的內容提交到儲存庫(Repository)保留git log
:檢視 Git 紀錄
這篇將會介紹
git commit
的主要意義。
先前我們提過 git add 是將檔案暫存在暫存區,這時候的檔案並還沒有完全提交出去,還需要透過 git commit
指令才算是完整流程喔!
git commit
$ git commit # 將暫存區的檔案提交到儲存庫儲存
git commit
指令讓暫存區的檔案提交到儲存庫(Repository)後,代表檔案能夠完整永久保存。
這個動作以我們實際操作方式可以說是「完成一個存檔(或備份)的動作」,也就是建立了一個「版本」。
git commit -m
"修改記錄"$ git commit -m"init commit" # 說明這次的 commit 做了什麼事
git commit
指令後面常搭配 -m"修改記錄"
,引號裡面代表註解,告訴我們這一次 Git 做了什麼更新、新增什麼到本地端。
注意:註解可使用中、英文表示,但記得最主要是**「清楚」**,目的是讓自己或其他合作者明白這次做了什麼動作,因此使用簡單的文字說明即可。
💡 使用 git commit 指令請一定要加上 -m"修改紀錄“
訊息
如果沒有輸入 -m
參數說明動作, Git 的預設是不會讓你執行 Commit 這個動作。因為這則執行的目的是要告訴自己及其他人「這次的修改做了什麼」。
實際範例:
現在 git_practice 有以下這些檔案|
使用上述指令提交到儲存庫裡
按下 enter 後,終端機會顯示這些回饋
從回饋裡的訊息可以看到這些提交相關資訊
master
)1eb52d1
)這時候我們使用 git status
指令看一下檔案狀態
可以發現現在是沒有檔案可以提交的,這是因為先前所做的變更都已經被保存成另一個版本。
如果今天有新增的檔案、或是更改檔案,只要再使用
git add
指令加入暫存區,然後透過git commit
指令提交到儲存庫,就會是一個完整的流程囉!
上述的操作步驟,會發現到在我們執行 git commit
指令時,先前都會先執行一次 git add
指令。這是因為「git commit
只會處理暫存區裡的內容」,也就是說如果今天新增檔案或是更改什麼動作,沒有先使用 git add
指令把檔案提交到暫存區,那麼 git commit
指令就不會有所內容可以執行動作。
實際範例
新增檔案後,直接執行 git commit
指令
$ touch index.html # 新增一個 index.html 檔案
//enter
$ git commit # 提交檔案到儲存庫
這時候終端機回饋的訊息是 index.html 是一個未被追蹤的狀態,所以沒有辦法提交。
因此我們在使用 git add
指令把檔案加到暫存區,並使用 git status
指令檢查檔案狀態。
這時候檔案有成功被追蹤了,接下來使用 git commit
指令提交到儲存庫。
訊息回饋有顯示出這一次做了哪些動作,記錄了新的版本。
💡 所以請記得: git commit 只會處理「暫存區」裡的內容
📝 補充|覺得每次提交都要經過 git add
在使用 git commit
覺得很麻煩怎麼辦?
git commit 裡可以搭配使用 -a
參數,如此一來就即使沒有先使用 add 也能完成 Commit 的動作囉!
$ git commit -a -m 'added new benchmarks'
但是要注意這種方式,只能用於已經存在於儲存區 (Respository)裡的檔案有效,也就是已經有在儲存區但有重新更新的檔案,對於新加入的檔案(Untracked file)是無法執行的唷!
📝 補充|使用二段式的好處
如果每一次更新就提交一次,會有太多零碎的 Commit 紀錄,這樣一來要查閱紀錄會有太多版本,反而降低效率。所以可以將更新過的檔案先放在暫存區,等到完成一個任務後,或是一天的工作完成後,再提交 Commit 就可以囉!