iT邦幫忙

2021 iThome 鐵人賽

DAY 9
1
Modern Web

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

Day9|工作區、暫存區、儲存庫,以及各執行的檔案狀態

前幾篇章節經常提到使用 git add 加至暫存區,git commit 提交到儲存庫。這些工作區、暫存區、儲存庫,分別代表什麼意思呢?讓我們一個一個好好認識,也就會對 Git 有更深的認識囉!

https://ithelp.ithome.com.tw/upload/images/20210923/20141010jzGpvpFK9W.png

Git 中檔案存放區域:

  1. 工作區( Working Directory )- 直接編輯的地方,在桌機上肉眼可見,可直接操作檔案。
  2. 暫存區域 ( Staging Area )- 數據暫時存放的區域,介於工作區與儲存庫之間。
  3. 儲存庫 ( Repository )- 存放已經提交的數據。

Git 中檔案會有的狀態顯示:

  1. 未追蹤(Untracked files)- 在剛新加入的檔案,或是版本提交後又新建立的檔案,這些都還沒有被 Git 版本控管
  2. 已更改(Changes not staged for commit) - 已提交版本後,檔案又再次被修改,那麼原本的檔案會再被丟回工作目錄( Working Directory )
  3. 等待提交(Changes to be committed) - 在工作目錄裡的檔案,在執行 git add 指令後,會從工作目錄中將檔案加至暫存區 ( Staging Area ),這時的狀態變為「等待提交」。
  4. 已提交(Committed) - 暫存區裡的檔案執行 git commit 指令後,檔案會從暫存區移動到儲存庫 ( Repository ),此時的狀態為「已提交」。

1. 工作區 (Working Directory )

git status 檔案狀態 —> 未追蹤 (Untracked files)已更改 (Changes not staged for commit)

💡 工作目錄:關於 Git 相關的操作,都會在這個目錄下完成

假設今天有個要準備開發的專案,我們會建立一個目錄,而在這個目錄下進行動作,例如:新增檔案、刪除檔案、修改檔案、重新命名檔案...等編輯動作,都會是在此工作目錄下完成。

在後續 Git 裡也會介紹到分支( Branch ),此時工作目錄很有可能會在各種不同分支之間切換,執行不同的指令,因此保持工作目錄的乾淨,是版本控管過程中的一個基本原則,有助於往後如果要進行合併時更加簡潔。

2. 暫存區域 ( Staging Area )

git status 檔案狀態 —> 等待提交(Changes to be committed)new file 狀態

我們建立新的檔案,或是更改檔案時,都會執行 git add指令將檔案加至暫存區(Staging Area),那麼暫存區是什麼呢?

💡 暫存區:也常被稱作索引(index),通常放在 Git 的目錄下,儲存關於下次提交的資訊。

目的|

紀錄「有哪些檔案即將要被提交到下一個 commit 版本中」。也就是說,當我們要提交一個版本到儲存庫前,需要先更新索引狀態,有變更才能提交成功。

好處|

擁有暫存區,可以賦予 Git 更多操作上的彈性與靈活性。在 Commit 提交之前我們都可以針對不同狀況去操作不同指令來控制檔案。

例如:

  1. 修改了三個檔案,其中一個不想提交,如何操作?
  2. 原先修改的檔案想放棄,如何回到原來的版本?
  3. 尚未完成的檔案,想先儲存可以怎麼做?
  4. 發現忘記切換分支怎麼辦,想切回正確的分支?

參考文章

遇到不同狀況、情境,都有對應的指令,加上參數使用,就可以成功執行我們想要的動作。

3. 儲存庫 ( Repository )

git status 檔案狀態 —> 已提交(Committed)

儲存庫是保存檔案或是程式碼的地方,暫存區的資料被提交到儲存庫後,可以永久保存。儲存有關於內容的歷史修改記錄、有關專案的內容。

儲存庫先前的文章有提到分為集中式、分散式,儲存庫再細分可以分成遠端及本地端。

  • 遠端數據庫 (Remote) - 為了讓多人共享而建立的數據庫,通常是一個共用的伺服器。
  • 本地端數據庫 (Local ) - 為了方便自己使用的數據庫,通常是個人開發的電腦或機台。

做完提交的動作到 Repository ,整個 Git 的工作流程才算完整。


複習基本 Git 工作流程:

  1. 工作目錄新增檔案、修改檔案
  2. 暫存區存取每一次的編輯動作。( git add )
  3. 將暫存區的檔案提交到儲存庫永久儲存。( git commit )

上一篇
Day8|【Git】檢視紀錄 - git log
下一篇
Day10|【Git】檔案管理 - 刪除檔案 git rm
系列文
【Git】從零開始學習 Git - 30 天的學習筆記30

尚未有邦友留言

立即登入留言