# Git Stash 教學 ### 什麼是 Git Stash ? 用於將目前未完成的修改暫時儲存起來,並將工作區還原到乾淨的狀態。 讓工程師在不提交(commit)未完成的工作的情況下,能夠切換分支、處理緊急任務或嘗試其他工作,完成後可以將暫存的變更取回並套用回去。 ### Stash 使用情境 某一天主管突然請小明看一下急件,系統出了BUG必須先修復,但是小明手上目前正在開發新功能,因此小明就可以使用 Git Stash 來暫存目前手上正在開發的功能分支。 ### Commit VS Stash 比較表 | 比較項目 | Git Commit | Git Stash | |----------------------|----------------------------------------------|--------------------------------------------------| | **目的** | 將變更永久記錄到版本紀錄中 | 暫時儲存未完成的變更,不進入正式版本紀錄 | | **是否加入版本控制紀錄** | ✅ 是,會加入 commit log | ❌ 否,不會出現在版本紀錄 | | **是否需要訊息說明** | ✅ 通常需要輸入 commit message | ❌ 預設不需輸入,但可加註說明 | | **適用情境** | 功能完成,準備納入正式版本控制 | 功能尚未完成,但需切換分支或處理緊急任務 | | **是否可切換分支** | ✅ 可以,建議先 commit 再切分支 | ✅ 可以,stash 後變更會被清除,安全切換 | | **還原方式** | `git revert` 或 `git reset` | `git stash pop` 或 `git stash apply` | | **是否支援多筆記錄** | ✅ 是,透過多次 commit | ✅ 是,stash 可堆疊多筆記錄 | | **是否會影響遠端** | ✅ 會,push 後遠端也會有這筆 commit | ❌ 不會,stash 僅存在本地端 | | **典型用途** | 保存功能完成的階段成果 | 暫存尚未完成的變更,處理緊急或短暫需求 | ### Commit 範例 ``` Git= # 檢查目前的修改狀態 git status # 將檔案加入暫存區(Stage) git add . # 建立一個新的提交(Commit) git commit -m "新增查詢單筆會員資料功能" ``` ### Stash 範例 ``` Git= # 將目前尚未提交的變更暫存起來 git stash # 查看目前的 stash 清單 git stash list # 套用最近的一筆 stash 並移除 git stash pop # 若要套用指定的一筆 stash(例如 stash@{1}),會刪除 stash 紀錄 git stash pop stash@{1} # 只套用但保留 stash 紀錄 git stash apply # 若要套用指定的一筆 stash(例如 stash@{1}),不會刪除 stash 紀錄 git stash apply stash@{1} # 移除指定的一筆 stash (例如 stash@{0}) git stash drop stash@{0} ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up