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

Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)

 更新時(shí)間:2023年12月25日 11:23:49   作者:beeworkshop  
這篇文章主要介紹了Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

概覽、Git代碼管理的幾個(gè)狀態(tài)及倒回

一、基于命令行

1. 工作區(qū)的代碼想撤銷

可能有一天我正在寫代碼,寫了很久發(fā)現(xiàn)寫錯(cuò)了,想恢復(fù)到一開始的狀態(tài),一個(gè)笨辦法就是把剛剛寫的代碼一行一行的刪除,不過這種方式成本太高,我們可以通過git checkout – <file> 命令來撤銷工作區(qū)的代碼修改。

如下圖:

首先我們執(zhí)行了 git status 命令,發(fā)現(xiàn)工作區(qū)是干凈的,然后執(zhí)行了 cat 命令,發(fā)現(xiàn)文件只有兩行內(nèi)容,然后通過 vi 編輯器向文件中添加一行,保存并退出,退出來之后又執(zhí)行了 git status 命令,此時(shí)工作區(qū)的狀態(tài)已經(jīng)發(fā)生變化,然后我們執(zhí)行了 git checkout – git01.txt 命令,表示撤銷之前的操作,讓 git01.txt 恢復(fù)到之前的狀態(tài),該命令執(zhí)行成功之后,我們?cè)賵?zhí)行 cat 命令發(fā)現(xiàn)文件內(nèi)容已經(jīng)恢復(fù)了,此時(shí)再執(zhí)行 git status,狀態(tài)也恢復(fù)了。

總結(jié)

git status
回顯 modified:	yourfile

git checkout -- yourfile

git status
回顯working tree clean

2. add到暫存區(qū)的代碼想撤銷

如果想要撤銷,但是代碼已經(jīng)提交到暫存區(qū)了,不用擔(dān)心,也能撤銷,分兩個(gè)步驟:

  • 將暫存區(qū)的代碼撤銷到工作區(qū)
  • 將工作區(qū)的代碼撤銷(具體操作和1小節(jié)一致)

將暫存區(qū)的代碼撤銷,我們可以使用 git reset HEAD 命令來實(shí)現(xiàn)。

如下圖:

這里的代碼都比較簡單,核心的過程就是先執(zhí)行 git reset HEAD 命令,從暫存區(qū)撤銷,剩下的操作參考 1 小節(jié)。

總結(jié)

git add afile
git status
git reset HEAD
git status
git checkout -- afile
git status

3. 提交到本地倉庫的代碼想撤銷

同樣的,提交到本地倉庫的代碼一樣也可以撤銷,我們可以利用 git reset --hard <版本號(hào)> 命令來實(shí)現(xiàn)版本回退,該命令中的版本號(hào)有幾種不同的寫法:

可以使用 HEAD^ 來描述版本,一個(gè) ^ 表示前一個(gè)版本,兩個(gè) ^^ 表示前兩個(gè)版本,以此類推。

也可以使用數(shù)字來代替 ^,比如說前 100 個(gè)版本可以寫作 HEAD~100。

也可以直接寫版本號(hào),表示跳轉(zhuǎn)到某一個(gè)版本處。我們每次提交成功后,都會(huì)生成一個(gè)哈希碼作為版本號(hào),所以這里我們也可以直接填版本號(hào),哈希碼很長,但是我們不用全部輸入,只需要輸入前面幾個(gè)字符即可,就能識(shí)別出來。

看下面一系列的操作:

通過 git log 查看當(dāng)前提交日志:

git log --pretty=short

通過 git reset HEAD^^ 向前回退兩個(gè)版本:

git reset --hard HEAD^^

查看日志,發(fā)現(xiàn)最后一次提交的版本號(hào)是 695ce1fe,利用 git reset --hard 695ce1fe 命令回退:

git reset --hard 695ce1fe

通過 git reset --hard HEAD~1 回到上一個(gè)版本:

git reset --hard HEAD~1

當(dāng)然以上操作都是基于命令行的,如果你命令行操作比較熟練的話,其實(shí)命令行操作比 IDEA 上點(diǎn)點(diǎn)點(diǎn)要快很多。

4. 遠(yuǎn)程倉庫的代碼想要撤銷

如果代碼提交到遠(yuǎn)程倉庫了,想要撤銷,那就如 3 小節(jié)所講,先在本地倉庫撤銷,然后 push 到遠(yuǎn)程倉庫即可。

二、基于 IDEA

1. 未提交就撤銷

對(duì)于第一小節(jié)的前兩種撤銷操作,即修改的文件還沒 commit,此時(shí)想要撤銷,方式很簡單,點(diǎn)擊 IDEA 右上角的撤銷按鈕:

如果你修改了文件,無論有沒有執(zhí)行 git add 命令,只要沒有 commit,都可以通過這個(gè)按鈕撤銷修改,點(diǎn)擊該按鈕,彈出如下提示框:

這里會(huì)列出來所有修改但是沒有 commit 的文件,想要撤銷哪個(gè)文件的修改,就勾選該文件,然后點(diǎn)擊 Rollback 按鈕就完成了撤銷操作。

2. commit 了想撤銷

如果已經(jīng) commit 了,那么就需要先打開提交日志,點(diǎn)擊如下按鈕打開:

也可以直接點(diǎn)擊 IDEA 右上角的時(shí)鐘圖標(biāo),快速打開提交日志:

提交日志類似下面這樣:

此時(shí)的回退就分情況了。

首先這個(gè)撤銷操作分兩種:

  • Revert Commit
  • Undo Commit

我們分別來看。

Undo Commit

Undo Commit 這個(gè)操作只能在最近一次提交上使用,不能在其他提交上使用,最近一次 commit 上,右鍵單擊,如下圖:

其他的 commit 上右鍵單擊:

既然如此,我們就來看看最近的一次 commit 如何 Undo Commit。

在最近一次 commit 日志上右鍵單擊后選擇 Undo Commit,如下圖:

選中后,直接點(diǎn)擊 OK,撤銷最近一次的 commit。

這就是撤銷最近一次 commit,撤銷之后,本地的修改相當(dāng)于變成了已 add 但是未 commit 的狀態(tài),此時(shí)我們可以繼續(xù)開發(fā)新代碼,然后再 commit,再 push;或者也可以像 1 小節(jié)介紹的那樣,繼續(xù)撤銷操作。

我電腦上的 IDEA 在這塊操作中有個(gè)偶發(fā)性問題,就是撤銷掉 commit 之后,IDEA 檢測(cè)不到文件處于未提交狀態(tài),需要我把 IDEA 關(guān)掉重新打開,IDEA 就能發(fā)現(xiàn)文件處于未提交狀態(tài)了,此時(shí)就可以按照 1 小節(jié)的步驟繼續(xù)回退了,這塊小伙伴們?cè)谠囼?yàn)的時(shí)候可以留意下。

Revert Commit

Revert Commit 這個(gè)操作到處都能用,不同于 Undo Commit,Revert Commit 之后,會(huì)產(chǎn)生一條提交記錄。相當(dāng)于 Revert Commit 其實(shí)也是提交,只不過提交的內(nèi)容剛好相反,剛好刷掉已有內(nèi)容。

Revert Commit 操作可以用在所有的日志上,而不僅僅是剛剛提交的 commit。

操作方式如下:

找到需要回滾的地方,右鍵單擊,選擇 Revert Commit:

此時(shí)會(huì)彈出來一個(gè)提交的對(duì)話框,就是一個(gè)普普通通的 commit 對(duì)話框,如下:

commit 之后,可以看到內(nèi)容已經(jīng)撤銷了,提交日志中也多了一條記錄,如下圖:

3. push 了想撤銷

如果已經(jīng) push 到遠(yuǎn)程倉庫了,怎么撤銷?

其實(shí)跟 2 小節(jié)一樣,先在本地倉庫撤銷,撤銷完成后,重新修改代碼,最后再 force push 就行了,不過 force push 的時(shí)候,注意別把同事的代碼給覆蓋了。

所以一定是先commit到本地倉庫,改完確認(rèn)了再push到遠(yuǎn)程倉庫。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • git代碼回滾到某個(gè)tag實(shí)現(xiàn)方式

    git代碼回滾到某個(gè)tag實(shí)現(xiàn)方式

    本文介紹了如何使用Git回滾到某個(gè)tag的基礎(chǔ)代碼,包括首先切換到需要修改的分支,查看所有tag并找到目標(biāo)tag,然后使用commit id進(jìn)行回滾
    2025-12-12
  • idea?git拉取代碼特別慢的問題及解決

    idea?git拉取代碼特別慢的問題及解決

    這篇文章主要介紹了idea?git拉取代碼特別慢的問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • VSCode連接遠(yuǎn)程服務(wù)器調(diào)試代碼超詳細(xì)流程(圖文)

    VSCode連接遠(yuǎn)程服務(wù)器調(diào)試代碼超詳細(xì)流程(圖文)

    這篇文章主要給大家介紹了關(guān)于VSCode連接遠(yuǎn)程服務(wù)器調(diào)試代碼的超詳細(xì)流程,遠(yuǎn)程調(diào)試是為了解決在本機(jī)開發(fā)環(huán)境與線上不一致導(dǎo)致調(diào)試難、搭建繁瑣,文中通過圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Jenkins配置maven項(xiàng)目之打包、部署、發(fā)布的全過程

    Jenkins配置maven項(xiàng)目之打包、部署、發(fā)布的全過程

    這篇文章主要介紹了Jenkins配置maven項(xiàng)目,打包、部署、發(fā)布,需要的朋友可以參考下
    2022-02-02
  • 關(guān)于Unity動(dòng)畫狀態(tài)機(jī)Animator使用教程

    關(guān)于Unity動(dòng)畫狀態(tài)機(jī)Animator使用教程

    這篇文章主要介紹了關(guān)于Unity動(dòng)畫狀態(tài)機(jī)Animator的使用教程,有需要的朋友可以借鑒參考下,希望可以對(duì)廣大讀者朋友能夠有所幫助
    2021-09-09
  • 老生常談?dòng)?jì)算機(jī)中的編碼問題(必看篇)

    老生常談?dòng)?jì)算機(jī)中的編碼問題(必看篇)

    下面小編就為大家?guī)硪黄仙U動(dòng)?jì)算機(jī)中的編碼問題(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Git創(chuàng)建子分支,合并分支并提交

    Git創(chuàng)建子分支,合并分支并提交

    這篇文章主要介紹了Git創(chuàng)建子分支,合并分支并提交,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-08-08
  • git使用rebase刪除某次提交的問題

    git使用rebase刪除某次提交的問題

    文章介紹了Git刪除特定commit的兩種方法:通過`git rebase -i HEAD~n`交互式刪除最近提交,需修改操作為`drop`并強(qiáng)制推送到遠(yuǎn)程;或使用`git rebase --abort`撤銷操作,同時(shí)提醒處理空提交時(shí)需檢查暫存區(qū)文件
    2025-09-09
  • Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解)

    Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解)

    這篇文章主要介紹了Git恢復(fù)之前版本的兩種方法reset、revert(圖文詳解),文中通過圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • VSCode gdb 調(diào)試 qemu u-boot 的方法詳解

    VSCode gdb 調(diào)試 qemu u-boot 的方法詳解

    這篇文章主要介紹了VSCode gdb 調(diào)試 qemu u-boot 的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-06-06

最新評(píng)論

凭祥市| 资溪县| 厦门市| 辽宁省| 丹江口市| 石景山区| 竹溪县| 安顺市| 黄大仙区| 大庆市| 伊吾县| 朝阳区| 正镶白旗| 垦利县| 桑日县| 景泰县| 苏尼特右旗| 五峰| 武功县| 额敏县| 益阳市| 涞水县| 巴林左旗| 阿拉善盟| 海城市| 陇川县| 安丘市| 邢台县| 安仁县| 岫岩| 常山县| 申扎县| 黑龙江省| 阿尔山市| 蒙自县| 错那县| 崇文区| 旺苍县| 武乡县| 桦南县| 泰安市|