git | 回退版本 并保存當前修改到stash,在進行整合。[git checkout | git stash 等方法 ]

目錄

一些常見命令:

git 回退版本

一、臨時回退(不會修改歷史,可隨時回到當前版本)

方法1:git checkout HEAD~1

問題:處于?detached HEAD 狀態下提交的,無法直接 git push

? 選項 1:將當前狀態保存為一個新分支(推薦)

? 選項 2:強制推送到某個遠程分支

二、永久回退(改變分支指向)

方法2:git reset

1. 保留修改(soft回退)

2. 丟棄暫存區,保留工作區修改(mixed,默認)

3. 全部丟棄(hard)

★ 保險操作:先備份一份修改

?排查package.json等環境是否有影響?

📦 步驟1:確認 package.json 有沒有變

方法1:查看文件改動歷史

方法2:比較當前版本與上一個版本的 package.json 差異

🛠 步驟2:排查 package-lock.json 差異

🧪 步驟3:強制同步依賴

→ 這會根據回退后的 package-lock.json,重新整理 node_modules,讓環境完全對應。

如何徹底回退?package.json 和 package-lock.json?

★ 選擇性的應用 stash —— 邊查看 stash 中的更改,一邊在 VSCode 里邊調整、邊預覽成果

🔍 1. 查看 stash 中的內容(不影響當前代碼)

👨?💻 2. 臨時應用 stash 內容(非永久)→ 可邊修改邊預覽

git stash apply?存在沖突:git stash apply error: Your local changes to the following files would be overwritten by merge:

?編輯

🔧 3.★ 如何邊修改邊查看效果?——?進入 VSCode 查看和編輯代碼

💾 4. 提交你要的改動(手動提交)

?? 注意:——處理完,可丟棄stash(git stash drop stash@{0})

🔄 總結你要的操作順序:


一些常見命令:

git log --oneline????????????????????????查看提交記錄,確定當前的commit

git checkout? COMMIT_ID? ? ? ? 退回到COMMIT_ID的版本

git status?????????????????????????????????當前修改了哪些文件

git diff????????????????????????????????????????查看具體改動內容

git stash drop????????????????????????????????放棄 stash 的內容(刪除 stash區的備份)

git stash pop? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 還原?stash 的內容

操作作用
git stash保存修改
git stash pop還原修改并刪除 stash 記錄
git stash apply還原修改但保留 stash 記錄
git stash list查看所有 stash
git stash -u保存所有修改(包括新文件
git stash show -p

查看 stash 的具體代碼變動

grep -r "xxxx" .全局搜索項目中的某個引用(如xxxx)

git 回退版本

一、臨時回退(不會修改歷史,可隨時回到當前版本)

方法1:git checkout HEAD~1

將工作區回退到上一個版本,但不會改變分支指向。

git checkout HEAD~1

  • 缺點:是游離HEAD狀態(detached HEAD),不能直接提交,需要創建新分支或回到當前版本。
后續問題:處于?detached HEAD 狀態下提交的,無法直接 git push

兩種解決方法:

? 選項 1:將當前狀態保存為一個新分支(推薦)

這樣你可以繼續開發、提交,也可以推送到遠程。

git switch -c xxxx?

git push origin xxx

📌 說明:

  • xxxx 是新分支名稱,你可以自定義,比如 feature-xxxx
  • 之后你可以在這個分支繼續開發,或合并到 master
? 選項 2:強制推送到某個遠程分支

如果你就是想直接推送到 origin/master(慎用,可能覆蓋遠程):

git push origin HEAD:master

?? 注意:

  • 如果遠程 master 有別人提交,這樣會有沖突或失敗
  • 推薦只在你確定遠程可以被覆蓋時用?

二、永久回退(改變分支指向)

方法2:git reset

1. 保留修改(soft回退)

git reset --soft HEAD~1

  • 回退到上一個版本,保留修改內容到暫存區
2. 丟棄暫存區,保留工作區修改(mixed,默認)

git reset --mixed HEAD~1

  • 暫存區回退,工作區保留修改(適合撤銷提交)。
3. 全部丟棄(hard)

git reset --hard HEAD~1

  • 完全回退到上個版本,暫存區和工作區的修改全部丟棄
  • 注意:慎用,數據無法恢復!

★ 保險操作:先備份一份修改

如果你還是不確定,建議先保存修改到分支或補丁:

git stash

→ 然后你就可以安全 git reset --hard HEAD~1,之后再用:

git stash pop

把修改還原回來。

git stash = 暫時存放修改,不丟失,方便回退或切換分支

🗂 查看所有 stash:git stash list

  • git stash 只保存已修改的內容(未跟蹤的新文件不會保存,需要加 -u 參數)。
  • 要備份所有修改(包括新文件):git stash -u

?排查package.json等環境是否有影響?

📦 步驟1:確認 package.json 有沒有變

方法1:查看文件改動歷史

git log package.json

  • 你會看到所有修改 package.json 的提交記錄(含時間、commit id、提交人)。
  • 看看最近一次修改是在回退的版本之前還是之后。

方法2:比較當前版本與上一個版本的 package.json 差異

git diff HEAD~1 package.json

  • 你會看到當前版本與上一個版本之間 package.json 的具體差異。
  • 如果沒有輸出 → 沒變。
  • 如果有依賴被添加或刪除 → 需要重新 npm install

🛠 步驟2:排查 package-lock.json 差異

同理:

git diff HEAD~1 package-lock.json

  • 這能告訴你依賴的版本號是否有變化。
  • 重點: package-lock.json 改了,node_modules 沒變,運行時可能就會異常。

🧪 步驟3:強制同步依賴

無論 package.json 是否變,保險操作

npm install

→ 這會根據回退后的 package-lock.json,重新整理 node_modules,讓環境完全對應。


如何徹底回退?package.jsonpackage-lock.json?

git log --oneline????????????????????????查看提交記錄,確定當前的commit

git show abc1234:package.json???找到回退的目標版本,如 ID 是 abc1234,看當時的 package.json

git checkout abc1234 -- package.json package-lock.json?確認沒問題后,用下面命令恢復

可以再用 grep "eventemitter3" package.json 檢查確認


★ 選擇性的應用 stash —— 邊查看 stash 中的更改,一邊在 VSCode 里邊調整、邊預覽成果

這樣你就能判斷哪些是「可以要的」,哪些是「舍棄的」

🔍 1. 查看 stash 中的內容(不影響當前代碼)

在終端中輸入:

git stash list

輸出示例:

stash@{0}: WIP on master: 26851d3 拖到畫布上方后消失(數據傳遞?)

👉 查看詳細改動內容:

git stash show -p stash@{0}

這個會顯示所有修改過的文件內容,便于你判斷。


👨?💻 2. 臨時應用 stash 內容(非永久)→ 可邊修改邊預覽

git stash apply

  • 現在所有 stash 的改動已回來了,但還沒提交,你可以:
    • VSCode 中逐個文件對比(左 Git 欄 → 點擊文件)
    • 預覽效果(運行 vite dev 之類),驗證哪些改動你想保留
git stash apply?存在沖突:git stash apply error: Your local changes to the following files would be overwritten by merge:

解決暫存你要保留的文件后再 stash apply

  1. 暫存你當前的 package-lock.jsonpackage.json,保護它們

    git add package-lock.json package.json

  2. 然后執行 stash apply 時使用 --index 參數,避免覆蓋已暫存的文件:

    git stash apply --index

?? 說明:--index 會盡量恢復 stash 中的文件,但由于你已經暫存了 package-lock.json,它不會被覆蓋。

stash 中的其他代碼文件已經被成功“應用”到了你的工作區(但未提交);


🔧 3.★ 如何邊修改邊查看效果?——?進入 VSCode 查看和編輯代碼

打開 VSCode → 左側源代碼管理 (SCM) 面板,你會看到所有的改動文件,可以:

  • 雙擊文件查看每一處改動(與當前版本對比)
  • 手動修改文件內容
  • 保存后運行你的項目查看效果


💾 4. 提交你要的改動(手動提交)

git add 你要的文件

git commit -m "從 stash 中提取部分改動,修復 X 功能"


?? 注意:——處理完,可丟棄stash(git stash drop stash@{0}

如果你確認所有需要的內容都已處理,可以丟棄 stash

git stash drop stash@{0}


🔄 總結你要的操作順序:

  1. git stash apply
  2. VSCode 調整 & 預覽成果
  3. 挑選需要的內容 → git addgit commit
  4. git stash drop(可選)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/73387.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/73387.shtml
英文地址,請注明出處:http://en.pswp.cn/web/73387.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用 Postman 進行接口測試?

使用 Postman 這一工具,可以輕松地進行接口測試。以下是一份簡單的使用教程,幫助你快速上手。 Postman 接口測試教程:詳細步驟及操作技巧

寫作軟件新體驗:讓文字創作更高效

一、開篇引入:寫作難題的破解之道 在當今信息爆炸的時代,寫作成為了我們生活和工作中不可或缺的一部分。然而,面對繁瑣的寫作任務,我們時常感到力不從心,甚至陷入創作的瓶頸。那么,有沒有一款軟件能夠幫助我們破解這一難題,讓文字創作變得更加高效和輕松呢?答案是肯定…

大模型思維鏈COT:Chain-of-Thought Prompting Elicits Reasoningin Large Language Models

一、TL;DR 探索了COT(chain-of-thought prompting)通過一系列的中間推理步驟來顯著的提升了LLM的復雜推理能力在三個大型語言模型上的實驗表明,思維鏈提示能夠提升模型在一系列算術、常識和符號推理任務上的表現解釋了一下為什么…

systemd-networkd的配置文件的優先級 筆記250325

systemd-networkd的配置文件的優先級 systemd-networkd的配置文件優先級規則如下: 1. 目錄優先級 配置文件按以下目錄順序加載(優先級從高到低): /etc/systemd/network(用戶自定義配置,最高優先級&#x…

詳細說明windows系統函數::SetUnhandledExceptionFilter(ExceptionFilter)

::SetUnhandledExceptionFilter(ExceptionFilter); 是 Windows 編程中用于設置頂層未處理異常過濾器的關鍵 API 調用。它屬于 Windows 結構化異常處理(SEH, Structured Exception Handling)機制的一部分,主要用于捕獲那些未被程序內部處理的異…

決策樹算法詳解:從西瓜分類到實戰應用

目錄 0. 引言 1. 決策樹是什么? 1.1 生活中的決策樹 1.2 專業版決策樹 2. 如何構建決策樹? 2.1 關鍵問題:選哪個特征先判斷? 2.1.1 信息熵(數據混亂度) 2.1.2 信息增益(劃分后的整潔度提…

超融合服務器是什么

超融合服務器的定義與背景 超融合服務器(Hyperconverged Infrastructure, HCI)是一種通過軟件定義技術,將計算、存儲、網絡和虛擬化功能整合到單一硬件平臺中的IT基礎設施解決方案。其核心目標是通過資源的高度集成和統一管理,簡…

【網絡層協議】NAT技術內網穿透

IP地址數量限制 我們知道,IP地址(IPv4)是一個4字節32位的整數,那么一共只有2^32也就是接近43億個IP地址,而TCP/IP協議棧規定,每臺主機只能有一個IP地址,這就意味著,一共只有不到43億…

時隔多年,終于給它換了皮膚,并正式起了名字

時隔多年,終于更新了直播推流軟件UI,并正式命名為FlashEncoder。軟件仍使用MFC框架,重繪了所有用到的控件,可以有效保證軟件性能,也便于后續進一步優化。 下載地址:https://download.csdn.net/download/Xi…

代碼隨想錄第六十二天| Floyd 算法精講 A * 算法精講 (A star算法) 最短路算法總結篇

Floyd 算法精講 題目描述 小明希望在公園散步時找到從一個景點到另一個景點的最短路徑。給定公園的景點圖,包含 N 個景點和 M 條雙向道路,每條道路有已知的長度。小明有 Q 個觀景計劃,每個計劃包含一個起點和終點,求每個計劃的最…

如何避免測試環境不穩定導致的誤報

避免測試環境不穩定導致誤報的核心方法包括搭建獨立穩定的測試環境、使用環境監控工具、建立環境變更管理機制、定期維護更新測試環境以及提升團隊的環境管理意識。 其中,搭建獨立穩定的測試環境尤為關鍵。獨立的測試環境能有效隔離其他環境的干擾,保證測…

初級:I/O與NIO面試題深度剖析

一、引言 在Java開發中,I/O(輸入/輸出)操作是程序與外部設備(如磁盤、網絡等)進行數據交互的重要方式。傳統的I/O模型在處理大規模數據和高并發場景時存在一定的局限性,而NIO(New I/O&#xff…

Axure RP9教程 :輪播圖(動態面板) | 頭部鎖定

文章目錄 引言I 輪播圖操作步驟在畫布中添加一個動態面板設置面板狀態II 頭部鎖定將頭部區域選中,右鍵組合或用Ctrl+G快捷鍵;將組合的頭部區域,右鍵創建動態面板;引言 動態面板的功能十分強大,比如:擁有獨立的內部坐標系,有多個狀態; Banner的案例中會用到動態面板多個…

超微服務器主板重置ipmi登錄密碼

超微服務器主板重置ipmi登錄密碼 超微服務器的ipmi登錄密碼不對,需要重置但是bios內并沒有找到可以設置的選項。 以下是解決辦法: 安裝IPMITOOL apt install ipmitool -y執行以下命令加載模塊: modprobe ipmi_watchdog modprobe ipmi_po…

藍橋杯第十屆 數的分解

題目描述 本題為填空題,只需要算出結果后,在代碼中使用輸出語句將所填結果輸出即可。 把 2019 分解成 3 個各不相同的正整數之和,并且要求每個正整數都不包含數字 2 和 4,一共有多少種不同的分解方法? 注意交換 3 個…

Docker入門篇4:查看容器資源、查看容器詳細信息、查看容器日志、查看容器內運行的進程

大家好我是木木,在當今快速發展的云計算與云原生時代,容器化技術蓬勃興起,Docker 作為實現容器化的主流工具之一,為開發者和運維人員帶來了極大的便捷 。下面我們一起開始入門第四篇:查看容器資源、查看容器詳細信息、…

基于數據挖掘的網絡入侵檢測關鍵技術研究

標題:基于數據挖掘的網絡入侵檢測關鍵技術研究 內容:1.摘要 隨著互聯網的迅速發展,網絡安全問題日益嚴峻,網絡入侵行為對個人、企業和國家的信息安全構成了巨大威脅。本文的目的是研究基于數據挖掘的網絡入侵檢測關鍵技術,以提高網絡入侵檢測…

中學數學幾百年重大錯誤:將無窮多各異假R誤為R——兩數集相等的必要條件

中學數學幾百年重大錯誤:將無窮多各異假R誤為R——兩數集相等的必要條件 黃小寧 設集A{x}表A各元均由x代表,相應變量x的變域是A。其余類推。本人多年前公開發表的論文中有定理: h定理(兩數集相等的必要條…

react-activation 實現頁面保活記錄

這里寫目錄標題 一、安裝插件(可選)1、react-activation (推薦)2、umi-plugin-keep-alive 二、AliveScope的兩種配置方式1、在src/app.ts 中配置2、在src/layout/index.tsx中配置 三、umi中的配置四、使用問題記錄1、drop使用不生…

STM32使用紅外避障傳感器

1.1 介紹: 該傳感器模塊對環境光適應能力強,其具有一對紅外線發射與接收管,發射管發射出一定頻率的紅外線,當檢測方向遇到障礙物(反射面)時,紅外線反射回來被接收管接收,經過比較器…