目錄
一些常見命令:
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.json
和 package-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
暫存你當前的
package-lock.json
、package.json
,保護它們:
git add package-lock.json package.json
然后執行
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}
🔄 總結你要的操作順序:
git stash apply
- VSCode 調整 & 預覽成果
- 挑選需要的內容 →
git add
→git commit
git stash drop
(可選)