最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解Git的暫存與stash功能

 更新時間:2026年02月05日 08:54:39   作者:于小洋  
在開發(fā)過程中,Git的暫存和Stash功能是管理代碼變更的核心工具,本文將系統(tǒng)梳理git add、git stash及相關(guān)高級操作,幫助開發(fā)者高效處理工作區(qū)與暫存區(qū)的狀態(tài)管理,需要的朋友可以參考下

基礎(chǔ)暫存操作

添加修改到暫存區(qū)

通過git add命令將工作目錄的修改標(biāo)記為“準(zhǔn)備提交”:

# 添加單個文件
git add file.txt

# 添加所有修改的文件(不包括未跟蹤的文件)
git add .

# 添加特定類型的文件(如所有.js文件)
git add *.js

功能:將修改存入暫存區(qū),但不會立即創(chuàng)建提交記錄。 注意:未跟蹤的文件需先用git add添加才能暫存。

取消暫存

誤將文件添加到暫存區(qū)時,可通過以下命令撤銷:

# 取消單個文件的暫存
git restore --staged file.txt

# 取消所有文件的暫存
git restore --staged .

功能:將文件從暫存區(qū)移回工作目錄,保留修改內(nèi)容。

一、Git Stash 是什么?核心作用

git stash (中文常翻譯為儲藏 / 暫存 / 暫存擱置) 是 Git 中極其常用的命令,核心核心作用

臨時「儲藏 / 保存」工作區(qū) + 暫存區(qū) 中所有未提交的修改內(nèi)容,讓你的工作區(qū)和暫存區(qū)立刻恢復(fù)到「干凈狀態(tài)」(和最近一次 commit 完全一致) ,且不會丟棄任何修改。

什么時候必須用 Git Stash?(核心使用場景)

這是使用 git stash黃金場景,遇到以下情況無腦用即可,也是工作中 99% 的使用場景:

  1. 正在當(dāng)前分支開發(fā)新功能 / 改 Bug,突然需要切換到其他分支(比如 test/release)處理緊急問題;
  2. 當(dāng)前分支的代碼改了一半、還沒寫完、無法提交(提交不完整的代碼會污染分支提交記錄);
  3. 切換分支前,Git 強制要求「工作區(qū)干凈」,否則會提示沖突或無法切換。

簡單說:想切分支、代碼沒寫完、不想提交 → 用 git stash 就對了!

二、Git Stash 基礎(chǔ)核心命令(必會,高頻使用)

所有命令按「使用頻率從高到低」排序,優(yōu)先掌握前 5 個即可滿足 90% 的開發(fā)需求,推薦死記硬背 + 熟練使用。

1. 核心存儲:git stash / git stash push

# 方式1:最簡寫法(推薦,工作中99%用這個)
git stash

# 方式2:保存修改并添加描述信息
git stash save "描述信息"

# 方式3:完整寫法(和上面等價,push 可以省略) 
git stash push

功能:把「工作區(qū) + 暫存區(qū)」的所有未提交修改,臨時保存到 Git 的「儲藏?!?/strong>,工作區(qū)立刻變干凈,所有修改被隱藏。

2. 帶備注存儲:git stash push -m "備注信息" 【強烈推薦】

git stash push -m "首頁輪播圖樣式修改-未完成" 

git stash push -m "訂單模塊bug修復(fù)-待測試"

功能:和 git stash 功能一致,唯一區(qū)別是給本次儲藏添加「自定義備注」。

為什么強烈推薦?當(dāng)你多次 git stash 后,會有多個儲藏記錄,帶備注能一眼區(qū)分每個儲藏對應(yīng)的修改內(nèi)容,不會混淆,避免后續(xù)恢復(fù)錯代碼!

3. 查看所有儲藏記錄:git stash list

git stash list

功能:查看 Git 儲藏棧中所有的臨時存儲記錄,輸出格式如下:

stash@{0}: On dev: 搜索框樣式優(yōu)化-未完成 
stash@{1}: On dev: 篩選條單選失效問題修復(fù)-待測試 
  • 儲藏棧是「后進先出」的結(jié)構(gòu)(棧結(jié)構(gòu)):最新的儲藏記錄排在最上面,編號 stash@{0}
  • 每個記錄包含:編號、所屬分支、自定義備注。

4. 恢復(fù)儲藏的修改:git stash pop 【最常用恢復(fù)方式】

# 恢復(fù)「最新的儲藏記錄」(stash@{0}),恢復(fù)后自動刪除這條儲藏記錄 
git stash pop 

# 恢復(fù)「指定編號」的儲藏記錄,恢復(fù)后自動刪除該記錄 
git stash pop stash@{1}
  • 核心功能將儲藏的修改恢復(fù)到當(dāng)前工作區(qū),恢復(fù)后代碼和你 stash 之前完全一致(工作區(qū) + 暫存區(qū)的修改都回來)。
  • 關(guān)鍵特性pop = 「恢復(fù) + 刪除」,恢復(fù)后這條儲藏記錄就從棧中消失了,適合確認(rèn)只恢復(fù)一次的場景。

5. 恢復(fù)儲藏的修改:git stash apply 【備選恢復(fù)方式】

# 恢復(fù)最新的儲藏記錄(stash@{0}),恢復(fù)后「不刪除」這條儲藏記錄
git stash apply

# 恢復(fù)指定編號的儲藏記錄,恢復(fù)后「不刪除」該記錄
git stash apply stash@{1}
  • 核心功能:和 git stash pop 幾乎一樣,都是把儲藏的修改恢復(fù)到工作區(qū)。
  • 關(guān)鍵區(qū)別apply = 「只恢復(fù),不刪除」,恢復(fù)后這條儲藏記錄依然保存在棧中,適合需要多次恢復(fù)同一份修改的場景

? 重點區(qū)分:git stash pop vs git stash apply(必考必用)

這兩個命令是最容易混淆的,記住核心差異只有一個是否刪除儲藏記錄

? git stash pop:恢復(fù) + 刪除記錄 → 「一次性恢復(fù)」,用完即刪,推薦日常使用;

? git stash apply:只恢復(fù),不刪記錄 → 「可重復(fù)恢復(fù)」,恢復(fù)后還能再次恢復(fù)這份修改,適合特殊場景。

三、Git Stash 進階命令(必會,解決 80% 的問題)

1. 刪除指定儲藏記錄:git stash pop儲藏編號

# 刪除最新的儲藏記錄
git stash drop stash@{0}

# 刪除指定編號的儲藏記錄
git stash drop stash@{2}

功能只刪除,不恢復(fù)。當(dāng)你有一些無用的儲藏記錄,不想恢復(fù)只想清理時,用這個命令。

2. 刪除所有儲藏記錄:git stash clear

git stash clear

功能:清空 Git 儲藏棧中的所有儲藏記錄,慎用執(zhí)行后無法恢復(fù)被刪除的記錄,適合確認(rèn)所有儲藏都無用時的批量清理。

3. 查看儲藏的「具體修改內(nèi)容」:git stash show

# 查看最新儲藏的「文件變更列表」(只顯示文件名+增刪行數(shù)) 
git stash show

# 查看最新儲藏的「完整diff詳情」(顯示具體修改的代碼行,推薦) 
git stash show -p

# 查看指定編號儲藏的完整diff詳情
git stash show -p stash@{1}

功能:在恢復(fù)儲藏前,想先看看這份儲藏里具體改了哪些代碼,避免恢復(fù)錯內(nèi)容時,用這個命令,-p 參數(shù)是核心(patch 補丁模式),能看到完整的代碼修改。

1. 儲藏「未追蹤的新文件」:git stash -u / git stash --include-untracked

git stash -u
# 等價寫法
git stash --include-untracked

重要特性補充默認(rèn)的 git stash 只會儲藏「已追蹤的文件」(已經(jīng)被 Git 管理的文件,比如之前 commit 過的文件),對于工作區(qū)中新建的、從未被 git add 過的新文件(未追蹤文件) ,默認(rèn)不會被儲藏。

-u 參數(shù)后:會把「已追蹤文件的修改 + 未追蹤的新文件」一起儲藏,工作區(qū)徹底干凈,連新文件都被隱藏了。

5. 儲藏「忽略的文件」:git stash -a / git stash --all

git stash -a
# 等價寫法
git stash --all

功能:最強的儲藏命令,會儲藏「已追蹤文件修改 + 未追蹤新文件 + .gitignore 中忽略的文件」(比如 node_modules、dist 等),適合需要完全清空工作區(qū)的場景,日常開發(fā)很少用,特殊場景(比如切換分支前徹底清理)可用。

四、Git Stash 避坑指南 & 核心注意事項(重中之重,必看!)

這部分是最容易踩坑的地方,很多人用 stash 出問題,都是因為沒注意這些規(guī)則,全部記住,能避開 99% 的坑!

? 注意 1:git stash 不會儲藏的內(nèi)容(默認(rèn)行為)

默認(rèn)執(zhí)行 git stash 時,以下內(nèi)容絕對不會被儲藏,會原封不動留在工作區(qū):

  • 從未被 Git 追蹤過的文件(新建的、沒執(zhí)行過 git add 的文件);
  • .gitignore 忽略的文件(比如依賴包、打包產(chǎn)物、日志文件);
  • 已經(jīng)提交到版本庫的文件(只會處理「未提交」的修改)。

? 解決辦法:需要儲藏未追蹤文件用 git stash -u,需要儲藏忽略文件用 git stash -a。

? 注意 2:stash 的恢復(fù)與「分支無關(guān)」,但有最佳實踐

很多人誤以為「在哪個分支 stash,就只能在哪個分支恢復(fù)」,這個認(rèn)知是錯誤的!

真相:Git 的 stash 是「全局的」,儲藏的是「文件的修改內(nèi)容」,不是和分支綁定的,你可以在 dev 分支 stash,然后切換到 test 分支恢復(fù)。

最佳實踐:盡量在哪個分支儲藏,就在哪個分支恢復(fù)!

原因:不同分支的代碼差異可能很大,跨分支恢復(fù) stash 大概率會觸發(fā)「代碼沖突」,處理沖突會增加不必要的麻煩,除非你明確知道兩份代碼無沖突。

? 注意 3:儲藏記錄的「生命周期」

儲藏記錄不是永久保存的,它是「臨時緩存」,以下操作會刪除儲藏記錄:

  • 執(zhí)行 git stash pop 編號:恢復(fù)后自動刪除該記錄;
  • 執(zhí)行 git stash drop 編號:手動刪除該記錄;
  • 執(zhí)行 git stash clear:刪除所有記錄;
  • 倉庫被刪除 / 遷移:儲藏記錄會跟著倉庫消失(不會同步到遠程倉庫)。

? 注意 4:stash 無法儲藏「空文件 / 空目錄」

如果你的修改只是新建了一個空文件 / 空目錄,執(zhí)行 git stash 不會生效,Git 會提示「No local changes to save」,這是 Git 的默認(rèn)規(guī)則,無需處理。

? 五、Git Stash 完整工作流程演示(工作中最常用,直接套用)

給你一套完整的「標(biāo)準(zhǔn)流程」,遇到「代碼沒寫完要切分支」的場景,直接按步驟執(zhí)行即可,零錯誤、零踩坑,這是工作中最經(jīng)典的用法:

場景:在 dev 分支開發(fā)新功能,寫到一半,需要切換到 test 分支修緊急 Bug

# 步驟1:當(dāng)前在 dev 分支,代碼沒寫完,帶備注儲藏所有修改(推薦帶-m)
git stash push -m "dev-個人中心模塊開發(fā)-未完成"

# 步驟2:查看儲藏記錄,確認(rèn)儲藏成功(可選,養(yǎng)成好習(xí)慣)
git stash list

# 步驟3:切換到目標(biāo)分支(此時工作區(qū)干凈,切換無任何問題)
git checkout test

# 步驟4:在 test 分支修復(fù) Bug,完成后正常提交
git add . git commit -m "test-修復(fù)訂單支付失敗bug"

# 步驟5:切回原分支
dev git checkout dev

# 步驟6:恢復(fù)之前儲藏的未完成代碼(推薦用pop,恢復(fù)后刪除記錄)
git stash pop

# 步驟7:繼續(xù)開發(fā)未完成的功能即可,代碼和之前完全一致 ??

核心知識點速記

核心概念

  1. git stash:臨時保存未提交修改,讓工作區(qū)變干凈,核心場景「代碼沒寫完要切分支」;
  2. stash 是「棧結(jié)構(gòu)」,后進先出,最新的記錄是 stash@{0}。

必會核心命令(按優(yōu)先級排序)

  1. 儲藏:git stash push -m "備注" (帶備注,推薦首選)
  2. 查看:git stash list
  3. 恢復(fù):git stash pop (恢復(fù) + 刪除,日常首選) / git stash apply(恢復(fù)不刪除,備選)
  4. 刪除:git stash drop 編號(刪指定) / git stash clear(刪全部)
  5. 查看修改:git stash show -p

兩大避坑重點

  1. 默認(rèn)不儲藏「未追蹤文件」和「忽略文件」,需要則加 -u / -a;
  2. 盡量「同分支儲藏、同分支恢復(fù)」,避免跨分支沖突。

核心區(qū)別速記

git stash pop → 恢復(fù) + 刪記錄;git stash apply → 恢復(fù)不刪記錄。

小劇場分享幾個好看的MD主題

  • qklhk-chocolate
  • scrolls-light
  • Chinese-red
  • nico
  • devui-blue
  • z-blue
  • yu

以上就是一文詳解Git的暫存與stash功能的詳細(xì)內(nèi)容,更多關(guān)于Git暫存與stash操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Git進行版本控制的實戰(zhàn)指南

    Git進行版本控制的實戰(zhàn)指南

    Git是一種分布式版本控制系統(tǒng),廣泛應(yīng)用于軟件開發(fā)中,它可以記錄和管理項目的歷史修改,并支持多人協(xié)作開發(fā),通過Git,開發(fā)者可以輕松地跟蹤代碼變更、合并分支、回退版本等操作,所以本文給大家詳細(xì)介紹了Git版本控制的實戰(zhàn)指南,需要的朋友可以參考下
    2025-09-09
  • vscode代碼格式化和eslint的使用

    vscode代碼格式化和eslint的使用

    這篇文章主要介紹了vscode代碼格式化和eslint的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • VS2019如何查看類圖的方法實現(xiàn)

    VS2019如何查看類圖的方法實現(xiàn)

    這篇文章主要介紹了VS2019如何查看類圖的方法實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 程序員開發(fā)項目是選擇效率還是質(zhì)量呢?

    程序員開發(fā)項目是選擇效率還是質(zhì)量呢?

    這篇文章主要介紹了程序員開發(fā)項目是選擇效率還是質(zhì)量呢?本文對這個每個程序員都會遇到的一個問題做了講解,需要的朋友可以參考下
    2014-07-07
  • 淺析hosts 文件的作用及修改 hosts 文件的方法

    淺析hosts 文件的作用及修改 hosts 文件的方法

    hosts是一個沒有擴展名的系統(tǒng)文件,其基本作用就是將一些常用的網(wǎng)址域名與其對應(yīng)的 IP 地址建立一個關(guān)聯(lián)“ 數(shù)據(jù)庫 ”。接下來通過本文給大家介紹hosts 文件的作用及修改 hosts 文件的方法,需要的朋友參考下吧
    2018-01-01
  • JetBrains(IEDA、CLion、Pycharm) 學(xué)生獲得免費使用資格

    JetBrains(IEDA、CLion、Pycharm) 學(xué)生獲得免費使用資格

    JetBrains針對學(xué)生推出了免費使用資格,但是很多同學(xué)卻不知道或者說不知道怎樣獲得免費資格,通過學(xué)生認(rèn)證來使用JetBrains的軟件才是最方便穩(wěn)定的,具體怎么獲取呢,感興趣的朋友跟隨小編一起看看吧
    2020-08-08
  • 常用的Git便捷操作合集

    常用的Git便捷操作合集

    雖然現(xiàn)在有很多圖形化的?Git?工具,但是命令行依然?yyds。本文記錄了工作中很有用的一些?Git?操作,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-09-09
  • 詳解IDEA git分支回退指定的歷史版本

    詳解IDEA git分支回退指定的歷史版本

    這篇文章主要介紹了詳解IDEA git分支回退指定的歷史版本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • VSCode 最全實用插件小結(jié)

    VSCode 最全實用插件小結(jié)

    VSCode插件可以幫助你更方便的操作,本文主要介紹了VSCode 最全實用插件小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Git提交代碼詳細(xì)流程及問題總結(jié)

    Git提交代碼詳細(xì)流程及問題總結(jié)

    這篇文章主要介紹了Git的三大分區(qū),分別是工作區(qū)、暫存區(qū)和版本庫,并詳細(xì)描述了提交、推送、拉取代碼和合并分支的流程,文中通過代碼介紹的非常詳解,需要的朋友可以參考下
    2025-02-02

最新評論

镇远县| 城固县| 沙洋县| 清水河县| 民县| 靖西县| 东乌珠穆沁旗| 铁岭市| 新乡县| 乌兰县| 柯坪县| 五大连池市| 青州市| 江华| 华坪县| 娄烦县| 盐池县| 湘潭市| 锡林浩特市| 宁安市| 广丰县| 类乌齐县| 绥化市| 盈江县| 正安县| 灵台县| 安义县| 浙江省| 通化市| 兖州市| 门头沟区| 安庆市| 岳池县| 丹东市| 宜良县| 平武县| 囊谦县| 柏乡县| 思南县| 阿城市| 出国|