新手指南:理解 Git 中的 git add 與 git stash

更新日期: 2024 年 12 月 25 日

Git 是一個強大的版本控制工具,但對於初學者來說,它的一些命令可能不太容易理解,例如 git addgit stash

本文將帶你一步步掌握它們的作用、使用場景,以及兩者之間的差異,幫助你更高效地管理版本控制工作。


git add:提交的第一步

git add 的作用是將文件的變更(或新增文件)添加到 暫存區(staging area),作為提交(git commit)的準備步驟。

特點

  • 選擇性提交:你可以選擇只添加某些文件。
  • 不會直接提交變更:變更會先停留在暫存區中,直到你執行 git commit
  • 為提交組織變更:方便你有條理地進行代碼提交。

範例

# 添加文件到暫存區
git add file1.txt file2.txt

# 提交變更
git commit -m "Add changes for file1 and file2"

在此過程中,git add 是必要的一步,它明確地將指定的文件變更納入到提交流程。


git stash:臨時存放變更

當你需要臨時保存當前的工作狀態(未完成的變更)而不想提交時,git stash 是你的最佳選擇。

它將當前工作目錄和暫存區的變更保存到 stash 堆疊 中,並恢復工作目錄到乾淨狀態。

特點

  • 保存未完成的工作:幫助你在不提交的情況下暫存變更。
  • 不影響分支歷史:變更不會進入提交歷史。
  • 支持多次存儲:可以將多次暫存的內容存入堆疊,按需恢復。

範例

# 將當前變更存入 stash
git stash

# 切換到其他分支
git checkout other-branch

# 修復完問題後回到原分支
git checkout original-branch

# 恢復暫存的變更
git stash apply

兩者的差異

雖然 git addgit stash 都涉及變更的處理,但它們的用途和影響範圍完全不同:

功能git addgit stash
目的為提交準備變更臨時存儲未提交的變更
影響範圍暫存區中的指定文件工作目錄和暫存區中的所有變更
是否提交變更否,需要手動執行 git commit否,不進行提交
應用場景準備提交或選擇性提交臨時保存變更,用於切換分支或修復問題
歷史影響添加的內容會成為下一次提交的一部分不會影響分支歷史

使用場景解析:為什麼需要 git stash

以下是一些典型的使用場景,說明為什麼 git stash 是一個不可或缺的工具:

臨時切換分支處理其他任務

假設你正在開發一個新功能,但此時需要切換到另一個分支修復緊急問題,而又不想提交未完成的代碼:

# 將當前未完成的變更存入 stash
git stash

# 切換到其他分支修復問題
git checkout main

# 修復完畢後回到原分支
git checkout feature

# 恢復變更
git stash apply

測試代碼或試驗新功能

在測試某些改動時,你可以先將當前變更存入 stash,試驗結束後再決定是否恢復:

# 存儲當前工作
git stash

# 試驗其他代碼
# ...

# 恢復原始變更
git stash apply

保持工作目錄乾淨

當你需要檢查其他功能或執行操作,而不希望當前未提交的變更影響這些操作時,可以使用 git stash


總結與最佳實踐

git add 的作用

  • 為提交準備變更,選擇性地將文件添加到暫存區。
  • 適合組織你的提交內容,確保提交代碼的清晰性。

git stash 的作用

  • 臨時存放變更,讓你在不提交的情況下自由切換上下文。
  • 適合處理未完成的工作、切換分支或試驗新功能。

簡單記住

  • 當你準備提交代碼時,使用 git add
  • 當你臨時存放未完成工作時,使用 git stash

通過靈活使用這兩個命令,你將能更高效地管理你的 Git 工作流!

Similar Posts