在Git中撤回最近的commit的多種方式小結(jié)
在 Git 中撤回(撤銷(xiāo))最近的 commit 有多種方式,具體取決于你的需求。以下是常見(jiàn)場(chǎng)景和對(duì)應(yīng)的命令:
1. 撤回 commit 但保留修改(保留工作目錄文件)
- 適用于:需要修改 commit 內(nèi)容后重新提交
git reset --soft HEAD^
- 效果:
- 撤銷(xiāo)最后一次 commit
- 代碼改動(dòng)保留在暫存區(qū)(
git status顯示已 add 狀態(tài))
2. 撤回 commit 并放棄修改(徹底刪除改動(dòng))
- 適用于:放棄最后一次 commit 的所有修改(謹(jǐn)慎使用!)
git reset --hard HEAD^
- 效果:
- 撤銷(xiāo) commit
- 代碼改動(dòng)完全消失(不可逆操作?。?/li>
3. 撤回 commit 但保留修改在工作目錄
- 適用于:重新選擇部分文件提交
git reset HEAD^ # 或 git reset --mixed HEAD^ # (默認(rèn)選項(xiàng))
- 效果:
- 撤銷(xiāo) commit
- 代碼改動(dòng)保留在工作目錄(
git status顯示未 add 狀態(tài))
4. 撤回多個(gè) commit
- 撤回最近 2 次 commit(保留修改):
git reset --soft HEAD~2
5. 已推送到遠(yuǎn)程倉(cāng)庫(kù)的撤回
- 如果 commit 已推送到遠(yuǎn)程分支(如
origin/main),需要強(qiáng)制推送:
git reset --hard HEAD^ # 本地撤回 git push --force origin 分支名 # 強(qiáng)制覆蓋遠(yuǎn)程
- 警告:強(qiáng)制推送會(huì)覆蓋遠(yuǎn)程歷史,確保團(tuán)隊(duì)其他成員知曉!
替代方案:創(chuàng)建反向 commit(推薦用于公共分支)
- 用新 commit 抵消舊 commit 的改動(dòng)(不修改歷史):
git revert HEAD
- 效果:
- 生成一個(gè)新 commit 來(lái)撤銷(xiāo)上一次 commit 的改動(dòng)
- 安全適用于已推送的 commit
總結(jié)場(chǎng)景選擇:
| 需求 | 命令 |
|---|---|
| 修改 commit 內(nèi)容重新提交 | git reset --soft HEAD^ |
| 完全放棄最后一次 commit | git reset --hard HEAD^ |
| 保留改動(dòng)并重新選擇文件提交 | git reset HEAD^ |
| 安全撤銷(xiāo)已推送的 commit | git revert HEAD |
注意:所有 HEAD^ 可替換為具體 commit hash(如 a1b2c3d)以撤銷(xiāo)更早提交。
到此這篇關(guān)于在Git中撤回最近的commit的多種方式小結(jié)的文章就介紹到這了,更多相關(guān)Git撤回最近的commit內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
git add -A 和 git add . 的區(qū)別詳解
這篇文章主要介紹了git add -A 和 git add . 的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07
Windows系統(tǒng)下安裝GIt及GIT基本認(rèn)識(shí)和配置
這篇文章主要介紹了Windows系統(tǒng)下安裝GIt及GIT基本認(rèn)識(shí)和配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09
寫(xiě)給正在讀計(jì)算機(jī)專(zhuān)業(yè)的同學(xué) 該如何學(xué)習(xí)
現(xiàn)在IT新技術(shù)日新月異。就常用編程語(yǔ)言而言,有c/c++、匯編、java,c#、Python等;操作系統(tǒng)平臺(tái)有unix/linux,windows系列2009-11-11
高性能WEB開(kāi)發(fā) web性能測(cè)試工具推薦
WEB性能測(cè)試工具主要分為三種,一種是測(cè)試頁(yè)面資源加載速度的,一種是測(cè)試頁(yè)面加載完畢后頁(yè)面呈現(xiàn)、JS操作速度的,還有一種是總體上對(duì)頁(yè)面進(jìn)行評(píng)價(jià)分析,下面分別對(duì)這些工具進(jìn)行介紹,如果誰(shuí)有更好的工具也請(qǐng)一起分享下。2010-05-05
如何在網(wǎng)頁(yè)中顯示服務(wù)器時(shí)間
在網(wǎng)頁(yè)上顯示時(shí)間,如果取的是用戶(hù)本機(jī)的時(shí)間,由于用戶(hù)的時(shí)間往往不準(zhǔn)確,所以顯示的有問(wèn)題。而服務(wù)器時(shí)間一般不會(huì)誤差太大,所以最好顯示服務(wù)器時(shí)間2013-03-03
一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問(wèn)題及解決辦法
這篇文章主要介紹了一不小心git rebase后出現(xiàn)(master|REBASE 1/10)的問(wèn)題及解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid
這篇文章主要介紹了vscode eslint插件報(bào)錯(cuò)Parsing error: Invalid ecmaVersion問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10

