在Git中撤回最近的commit的多種方式小結
更新時間:2025年10月28日 09:26:31 作者:myflwq
在我們使用git作為版本控制工具進行代碼管理之后,經常性的會碰到一個問題:git commit后,如何撤銷最近的一次commit,所以本文給大家介紹了在Git中撤回最近的commit的多種方式的相關資料,需要的朋友可以參考下
在 Git 中撤回(撤銷)最近的 commit 有多種方式,具體取決于你的需求。以下是常見場景和對應的命令:
1. 撤回 commit 但保留修改(保留工作目錄文件)
- 適用于:需要修改 commit 內容后重新提交
git reset --soft HEAD^
- 效果:
- 撤銷最后一次 commit
- 代碼改動保留在暫存區(qū)(
git status顯示已 add 狀態(tài))
2. 撤回 commit 并放棄修改(徹底刪除改動)
- 適用于:放棄最后一次 commit 的所有修改(謹慎使用!)
git reset --hard HEAD^
- 效果:
- 撤銷 commit
- 代碼改動完全消失(不可逆操作?。?/li>
3. 撤回 commit 但保留修改在工作目錄
- 適用于:重新選擇部分文件提交
git reset HEAD^ # 或 git reset --mixed HEAD^ # (默認選項)
- 效果:
- 撤銷 commit
- 代碼改動保留在工作目錄(
git status顯示未 add 狀態(tài))
4. 撤回多個 commit
- 撤回最近 2 次 commit(保留修改):
git reset --soft HEAD~2
5. 已推送到遠程倉庫的撤回
- 如果 commit 已推送到遠程分支(如
origin/main),需要強制推送:
git reset --hard HEAD^ # 本地撤回 git push --force origin 分支名 # 強制覆蓋遠程
- 警告:強制推送會覆蓋遠程歷史,確保團隊其他成員知曉!
替代方案:創(chuàng)建反向 commit(推薦用于公共分支)
- 用新 commit 抵消舊 commit 的改動(不修改歷史):
git revert HEAD
- 效果:
- 生成一個新 commit 來撤銷上一次 commit 的改動
- 安全適用于已推送的 commit
總結場景選擇:
| 需求 | 命令 |
|---|---|
| 修改 commit 內容重新提交 | git reset --soft HEAD^ |
| 完全放棄最后一次 commit | git reset --hard HEAD^ |
| 保留改動并重新選擇文件提交 | git reset HEAD^ |
| 安全撤銷已推送的 commit | git revert HEAD |
注意:所有 HEAD^ 可替換為具體 commit hash(如 a1b2c3d)以撤銷更早提交。
到此這篇關于在Git中撤回最近的commit的多種方式小結的文章就介紹到這了,更多相關Git撤回最近的commit內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
關于VSCode 裝好ESLint 插件 import 報黃線的問題
這篇文章主要介紹了VSCode 裝好ESLint 插件 import 報黃線的問題,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
關于Idea向GitHub push代碼時一直重復提示輸入用戶名和密碼的問題
這篇文章主要介紹了關于Idea向GitHub push代碼時一直重復提示輸入用戶名和密碼的問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01

