iT邦幫忙

2021 iThome 鐵人賽

DAY 6
2
Modern Web

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

Day6|【Git】提交檔案給 Git 控管 - git status 、 git add 指令

接下來讓我們開始熟悉 Git 的操作流程。

使用 Git 的時候,我們會常看見以下四個指令:

  1. git status : 查詢目前目錄的「狀態
  2. git add :把檔案交給 Git ,讓 Git 開始「追蹤」目錄,此時內容加到暫存區
  3. git commit :將暫存區的內容提交到儲存庫(Repository)保留
  4. git log檢視 Git 紀錄

以上狀態、提交,或是暫存區這些我們都會在後面慢慢了解這些代表的是什麼意思,在這裡只要先熟悉操作 Git 時,我們會常用的指令步驟。

文章中提到的工作目錄、暫存區之後也會逐一介紹分別有什麼作用。


git status 檢查狀態

$ git status 

透過 git status 指令,我們可以查詢現在這個目錄的狀態

1. 如果工作目錄沒有內容時的狀態|git status 指令

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

👉 回饋內容顯示 nothing to commit 表示目前「沒有東西可以提交」。

2. 新增一個命名為 index.html 檔案 |touch 指令

可透過指令新增檔案,或是直接在檔案夾裡手動新增

$ touch index.html #新增一個 index.html 檔案

複習:touch 指令代表建立、新增一個檔案

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

輸入指令按下 Enter 之後,可以在 git_practice 內找到一個 index.html 檔案。

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

3. 再次使用 git status 指令,查詢目前目錄狀態

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

此時回饋顯示:Untracked files 但有看到 index.html 檔案名稱

Untracked files 代表這個檔案還沒被加入 Git 版控系統,還沒開始正式被 Git 「追蹤」

4. 將 index.html 檔案提交給 Git 控管 | git add 指令

$ git add index.html # 將 index.html 檔案提交
// git add + [檔案名稱]

https://ithelp.ithome.com.tw/upload/images/20210918/201410104B1d1yQL3B.png

在終端機輸入指令內容不會有任何輸出結果,但是我們可以再一次使用 git status 指令檢查檔案狀態。

5. 查看檔案狀態 git status

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

可以發現此時的狀態從 Untracked files 變成 new file 狀態。

new file 表示目前這個檔案已經被安置在暫存區( Staging Area )

暫存區也常被稱作索引(index),因此 git add 也常被稱作將檔案加入索引。


📝 補充|如果目錄內有很多檔案,想要一次全部都加入索引,那麼這時候可以使用以下指令

$ git add . # 將全部內容加入索引

. 代表全部的意思,記得在 git add 後加上空白格在輸入 .,才是正確的格式。

以下我示範新增幾個檔案,一次加入後並查看狀態:

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

$ 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 資料夾裡會有剛才新加入的內容

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

這時候我們可以透過 git add . 指令將全部加入暫存區,並檢查目前的檔案狀態

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

可以發現剛才新增的內容狀態都變成 new file 狀態,代表成功加入暫存區。


📝 補充| git add --allgit add . 的差異

有時候我們想要把全部檔案加到暫存區,也會使用 git add --all 的方式加入,那麼這兩個參數的差異有何不同呢?

git add --all 雖然指令可以把所有檔案加到暫存區,但是有時會因 Git 版本不同或執行指令時的目錄位置而產生不同的結果。

  1. 版本系統

    Git 舊版本(1.x)使用 git add . 指令時,不會處理「刪除檔案」的行為。

    但在新版(2.x)已經改版成不管是 git add --all 還是 git add . 指令,都會處理新增檔案、修改檔案、刪除檔案的行為。

    因此現在大多使用的版本都是屬於比較新版,不會有什麼差別,但還是要了解一下版本的不同可能會有不同的執行結果。

  2. 執行指令時的目錄位置

    git add . 指令|將目前所在的目錄,以及它以下的子目錄、子子目錄 ...等裡的變動都加到暫存區,但如果是在這個目錄外的東西,就不會被影響。

    git add --all 指令|不管在哪一層目錄,只要是這個專案裡的東西,所有的變動都會加至暫存區。

    以下來個範例:

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

    指令新增方法跟上述一樣,就不再多說明

    此時資料夾內有這些東西:

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

    在 git_practice 資料夾下,one 、 two 是子目錄

    情況一|在根目錄 git_practice 下使用 git add . 指令,並檢查狀態

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

    可以發現都有成功加至暫存區(綠字 new file)

    情況二|在根目錄 one 下使用 git add . 指令

    假設今天我的 example.html 與 one1.html 檔案都有更動並存擋

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

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

    此時我將目錄切換到 one 執行 git add . 指令,並檢查狀態

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

    可以發現有變動過的檔案,只有 one1.html 檔案狀態改為 new file ,而 example.html 也有變動的檔案卻沒成功加入進去。

    這時候我們改成使用 git add --all 指令,查看狀態

    https://ithelp.ithome.com.tw/upload/images/20210918/201410107JkR7N5chd.png

    太好了!所有有變動過的檔案都成功加至暫存區了!

    補充|如果今天只想將同樣的副檔名(例 .html)加至暫存區,可以輸入以下指令

    $ git add *.html #將副檔名為 .html 的所有檔案加至暫存區
    

    git add *.副檔名

    了解了 git add 指令後,接下來就進入使用 git commit 指令,將檔案提交給 Git


上一篇
Day5|【Git】動手建立、初始儲存庫(Repository)!
下一篇
Day7|【Git】提交檔案至儲存庫 - git commit
系列文
【Git】從零開始學習 Git - 30 天的學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言