iT邦幫忙

2021 iThome 鐵人賽

DAY 7
1
Modern Web

【Git】從零開始學習 Git - 30 天的學習筆記系列 第 7

Day7|【Git】提交檔案至儲存庫 - git commit

複習一下上一篇提到 git 四個常使用的指令:

  1. git status : 查詢目前目錄的「狀態
  2. git add :把檔案交給 Git ,讓 Git 開始「追蹤」目錄,此時內容加到暫存區
  3. git commit :將暫存區的內容提交到儲存庫(Repository)保留
  4. 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 有以下這些檔案|

https://ithelp.ithome.com.tw/upload/images/20210918/20141010BC2NfT44bU.png

使用上述指令提交到儲存庫裡

https://ithelp.ithome.com.tw/upload/images/20210918/20141010L61zipPKjG.png

按下 enter 後,終端機會顯示這些回饋

https://ithelp.ithome.com.tw/upload/images/20210918/20141010bTQpstxRsR.png

從回饋裡的訊息可以看到這些提交相關資訊

  • 提交到哪個分支(master
  • 提交的 SHA-1 校驗碼(1eb52d1
  • 有多少檔案被更動
  • 統計此提交有多少列被新增和被移除

這時候我們使用 git status 指令看一下檔案狀態

https://ithelp.ithome.com.tw/upload/images/20210918/20141010iAKLjmOq1s.png

可以發現現在是沒有檔案可以提交的,這是因為先前所做的變更都已經被保存成另一個版本。

如果今天有新增的檔案、或是更改檔案,只要再使用 git add 指令加入暫存區,然後透過 git commit 指令提交到儲存庫,就會是一個完整的流程囉!

切記|git commit 只會處理「暫存區」裡的內容

上述的操作步驟,會發現到在我們執行 git commit 指令時,先前都會先執行一次 git add 指令。這是因為「git commit 只會處理暫存區裡的內容」,也就是說如果今天新增檔案或是更改什麼動作,沒有先使用 git add 指令把檔案提交到暫存區,那麼 git commit 指令就不會有所內容可以執行動作。

實際範例

新增檔案後,直接執行 git commit 指令

$ touch index.html # 新增一個 index.html 檔案
//enter
$ git commit # 提交檔案到儲存庫

https://ithelp.ithome.com.tw/upload/images/20210918/20141010T9b70S0q3z.png

https://ithelp.ithome.com.tw/upload/images/20210918/20141010nkzSZKMwFe.png

這時候終端機回饋的訊息是 index.html 是一個未被追蹤的狀態,所以沒有辦法提交。

因此我們在使用 git add 指令把檔案加到暫存區,並使用 git status 指令檢查檔案狀態。

https://ithelp.ithome.com.tw/upload/images/20210918/20141010MSqXjl79ZB.png

這時候檔案有成功被追蹤了,接下來使用 git commit 指令提交到儲存庫。

https://ithelp.ithome.com.tw/upload/images/20210918/20141010KlBNk6vU1b.png

訊息回饋有顯示出這一次做了哪些動作,記錄了新的版本。

💡 所以請記得: git commit 只會處理「暫存區」裡的內容


📝 補充|覺得每次提交都要經過 git add 在使用 git commit 覺得很麻煩怎麼辦?

git commit 裡可以搭配使用 -a 參數,如此一來就即使沒有先使用 add 也能完成 Commit 的動作囉!

$ git commit -a -m 'added new benchmarks'

但是要注意這種方式,只能用於已經存在於儲存區 (Respository)裡的檔案有效,也就是已經有在儲存區但有重新更新的檔案,對於新加入的檔案(Untracked file)是無法執行的唷!

📝 補充|使用二段式的好處

如果每一次更新就提交一次,會有太多零碎的 Commit 紀錄,這樣一來要查閱紀錄會有太多版本,反而降低效率。所以可以將更新過的檔案先放在暫存區,等到完成一個任務後,或是一天的工作完成後,再提交 Commit 就可以囉!


上一篇
Day6|【Git】提交檔案給 Git 控管 - git status 、 git add 指令
下一篇
Day8|【Git】檢視紀錄 - git log
系列文
【Git】從零開始學習 Git - 30 天的學習筆記30

尚未有邦友留言

立即登入留言