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

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

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

基礎(chǔ)暫存操作

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

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

# 添加單個(gè)文件
git add file.txt

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

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

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

取消暫存

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

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

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

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

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

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

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

什么時(shí)候必須用 Git Stash?(核心使用場(chǎng)景)

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

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

簡(jiǎn)單說(shuō):想切分支、代碼沒(méi)寫完、不想提交 → 用 git stash 就對(duì)了!

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

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

1. 核心存儲(chǔ):git stash / git stash push

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

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

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

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

2. 帶備注存儲(chǔ):git stash push -m "備注信息" 【強(qiáng)烈推薦】

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

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

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

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

3. 查看所有儲(chǔ)藏記錄:git stash list

git stash list

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

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

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

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

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

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

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

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

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

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

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

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

三、Git Stash 進(jìn)階命令(必會(huì),解決 80% 的問(wèn)題)

1. 刪除指定儲(chǔ)藏記錄:git stash pop儲(chǔ)藏編號(hào)

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

# 刪除指定編號(hào)的儲(chǔ)藏記錄
git stash drop stash@{2}

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

2. 刪除所有儲(chǔ)藏記錄:git stash clear

git stash clear

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

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

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

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

# 查看指定編號(hào)儲(chǔ)藏的完整diff詳情
git stash show -p stash@{1}

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

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

git stash -u
# 等價(jià)寫法
git stash --include-untracked

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

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

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

git stash -a
# 等價(jià)寫法
git stash --all

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

四、Git Stash 避坑指南 & 核心注意事項(xiàng)(重中之重,必看?。?/h2>

這部分是最容易踩坑的地方,很多人用 stash 出問(wèn)題,都是因?yàn)闆](méi)注意這些規(guī)則,全部記住,能避開 99% 的坑!

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

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

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

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

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

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

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

最佳實(shí)踐:盡量在哪個(gè)分支儲(chǔ)藏,就在哪個(gè)分支恢復(fù)!

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

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

儲(chǔ)藏記錄不是永久保存的,它是「臨時(shí)緩存」,以下操作會(huì)刪除儲(chǔ)藏記錄:

  • 執(zhí)行 git stash pop 編號(hào):恢復(fù)后自動(dòng)刪除該記錄;
  • 執(zhí)行 git stash drop 編號(hào):手動(dòng)刪除該記錄;
  • 執(zhí)行 git stash clear:刪除所有記錄;
  • 倉(cāng)庫(kù)被刪除 / 遷移:儲(chǔ)藏記錄會(huì)跟著倉(cāng)庫(kù)消失(不會(huì)同步到遠(yuǎn)程倉(cāng)庫(kù))。

? 注意 4:stash 無(wú)法儲(chǔ)藏「空文件 / 空目錄」

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

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

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

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

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

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

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

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

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

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

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

核心知識(shí)點(diǎn)速記

核心概念

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

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

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

兩大避坑重點(diǎn)

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

核心區(qū)別速記

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

小劇場(chǎng)分享幾個(gè)好看的MD主題

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

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

相關(guān)文章

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

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

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

    vscode代碼格式化和eslint的使用

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

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

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

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

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

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

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

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

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

    常用的Git便捷操作合集

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

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

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

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

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

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

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

最新評(píng)論

江北区| 衢州市| 苍山县| 凤翔县| 布拖县| 凤台县| 宁远县| 全南县| 郸城县| 双牌县| 屯门区| 教育| 噶尔县| 常州市| 丽水市| 儋州市| 若尔盖县| 荥经县| 枝江市| 浦东新区| 黄平县| 南投县| 衡阳市| 汾西县| 岗巴县| 宣汉县| 襄樊市| 乐平市| 察雅县| 潢川县| 衡山县| 渭南市| 彰化县| 江都市| 旺苍县| 鲁山县| 象州县| 德令哈市| 肥乡县| 如皋市| 南汇区|