
- Git 入門
- Git - 首頁
- Git - 版本控制
- Git - 基本概念
- Git - 命令列
- Git - 安裝
- Git - 首次設定
- Git - 基本命令
- Git - 獲取幫助
- Git - 工具
- Git - 速查表
- Git - 術語
- Git 分支
- Git - 簡述分支
- Git - 建立新分支
- Git - 切換分支
- Git - 分支與合併
- Git - 合併衝突
- Git - 管理分支
- Git - 分支工作流程
- Git - 遠端分支
- Git - 跟蹤分支
- Git - 變基
- Git - 變基與合併
- Git - 合併提交
- Git 操作
- Git - 克隆操作
- Git - 打標籤操作
- Git - 別名操作
- Git - 提交操作
- Git - 暫存操作
- Git - 移動操作
- Git - 重新命名操作
- Git - 推送操作
- Git - 拉取操作
- Git - Fork 操作
- Git - 修補操作
- Git - 差異操作
- Git - 狀態操作
- Git - 日誌操作
- Git - HEAD 操作
- Git - origin master
- Git 撤銷
- Git - 撤銷更改
- Git - 檢出
- Git - 恢復
- Git - 重置
- Git - 恢復操作
- Git - Rm
- Git - 切換操作
- Git - Cherry-pick
- Git - 修改
- Git 在伺服器上
- Git - 本地協議
- Git - 智慧 HTTP 協議
- Git - 啞 HTTP 協議
- Git - SSH 協議
- Git - Git 協議
- Git - 在伺服器上獲取 Git
- Git - 設定伺服器
- Git - 守護程序
- Git - GitWeb
- Git - GitLab
- Git - 第三方託管選項
- 分散式 Git
- Git - 分散式工作流
- Git - 為專案做貢獻
- Git - 維護專案
- 自定義 Git
- Git - 配置
- Git - 鉤子
- Git - 屬性
- Git - Init
- Git - Commit
Git 暫存
git stash 命令用於在不提交的情況下儲存工作,透過臨時儲存工作目錄中尚未準備好提交的更改。
這有助於我們在活動之間切換或暫時擱置未完成的修改,而無需堆積提交歷史。
它允許我們撤銷自上次提交以來在索引和工作目錄中所做的所有更改,將我們的工作目錄恢復到其原始狀態。
主要特點
臨時儲存工作 - 暫存和未暫存的更改都可以臨時儲存。
多個暫存 - 可以儲存多組更改,並以任意順序重新應用。
暫存列表 - 可以一次檢視所有暫存更改的列表。
應用暫存 - 稍後可以使用apply和pop選項應用暫存的更改。git stash pop在應用更改後會刪除暫存。
暫存特定更改 - 只能暫存更改的一部分。
暫存預設使用“WIP on branchname...”標籤建立,但我們可以新增更具資訊性的語句。
可以使用 reflog 表示法(stash@{1}、stash@{2.hours.ago}等)檢索舊的暫存,最新的暫存儲存在refs/stash中。
此外,可以透過索引stash@{n}訪問暫存,其中{n}是暫存編號。
命令
暫存更改的通用命令是git stash。
git stash
push
命令git stash push刪除索引和工作目錄中最近的修改,並將它們儲存在一個新的暫存中。
我們可以選擇向暫存新增詳細的<message>以指示其中包含的內容。
刪除push限制非選項引數以避免意外暫存,但允許快速快照。
命令git stash -p允許互動式選擇要暫存的修改;它是git stash push -p的快捷方式。
可以在--之後放置路徑規範元件,以更清楚地說明要暫存哪些檔案或修改。
save
命令git stash save已棄用,應替換為git stash push。
git stash save
與git stash push相反,git stash save不支援指定單個檔案(路徑規範)。
傳遞給git stash save的任何其他輸入都將連線起來以生成暫存訊息,而不是路徑規範。
list
執行git stash list將顯示當前所有儲存的暫存條目。
git stash list
每個暫存條目按順序命名為stash@{n},其中stash@{0}表示最新的暫存。
它顯示建立每個暫存時正在使用的分支名稱。
每個暫存條目都包含作為其基礎的提交的簡要摘要。
show
git stash show命令顯示暫存條目中記錄的更改。
git stash show
預設情況下,它顯示更改摘要(diffstat),但使用<diff-options>,它可以使用git diff支援的任何格式顯示實際更改。
控制統計資訊和補丁顯示預設行為的配置變數包括stash.showStat和stash.showPatch。
顯示暫存更新時,stash.showIncludeUntracked設定控制是否預設啟用--include-untracked。
apply
命令git stash apply將暫存中的更改應用於當前的工作樹和索引(暫存區)。
git stash apply
它不會像git stash pop那樣從暫存列表中刪除暫存。
我們可以使用任何類似於git stash push或git stash create生成的暫存的提交,或者透過提供其名稱(stash@{n})來指定特定的暫存條目。
要更安靜地操作並減少輸出冗餘,請使用-q或--quiet。
branch
從建立<stash>的提交開始,建立一個名為<branchname>的新分支。
git stash branch
使用儲存的修改更新工作樹和新分支的索引。
當<stash>以stash@{<revision>}格式輸入時,應用後會刪除該暫存。
非常適合快速分支帶有暫存的更改,尤其是在由於衝突導致簡單的git stash apply變得複雜時。
clear
git stash clear命令將刪除暫存中的所有條目。
git stash clear
這些條目在刪除後容易被剪下,可能無法恢復。
drop
git stash drop命令將從暫存條目列表中刪除一個暫存記錄。
git stash drop
要抑制確認訊息,請將其與-q或--quiet選項結合使用。
create
命令git stash create生成一個名為暫存條目的普通提交物件,並在不將其儲存到 ref 名稱空間的情況下返回其物件名稱。
git stash create
與git stash push相比,此功能使用頻率較低,主要用於指令碼編寫目的。
store
git stash store命令透過將使用git stash create建立的暫存(一個懸空合併提交)儲存到暫存 ref 中來修改暫存 reflog。
git stash store
通常情況下,git stash push更適合於生成和儲存暫存。
此命令主要用於指令碼編寫目的,不直接使用。
選項
git stash命令支援以下選項
-a
--all
當與git stash push和git stash save結合使用時,-a或--all選項將暫存所有更改,包括暫存、修改和未跟蹤的檔案,包括通常被忽略的檔案。
它還使用git clean在暫存後清理未跟蹤的檔案。
-u
--include-untracked
--no-include-untracked
-u / --include-untracked - 當與git stash push或git stash save結合使用時,將暫存所有更改、暫存和未跟蹤的檔案,包括通常被忽略的檔案。
然後使用git clean清理它們。
當與git stash show結合使用時,在暫存條目的差異中顯示未跟蹤的檔案。
--no-include-untracked - 與-u相反,此命令防止在使用上述命令時在差異中顯示或暫存未跟蹤的檔案。
--only-untracked
僅顯示暫存條目中的未跟蹤檔案作為差異的一部分;僅限於git stash show命令。
--index
當與git stash pop和git stash apply命令結合使用時,它會嘗試將修改重新應用到索引(暫存區)以及工作樹。
-k
--keep-index
--no-keep-index
當與git stash push或git stash save結合使用時,選項-k / --keep-index :- 僅暫存未暫存的更新,同時保留已新增到索引(暫存區)的所有更改。
與-k相反,當與上述命令結合使用時,--no-keep-index會暫存所有修改,包括已在索引中的修改。
git stash臨時暫存工作目錄中的所有更改。可以在需要時重新應用暫存的更改。