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

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

 更新時(shí)間:2023年12月25日 11:23:49   作者:beeworkshop  
這篇文章主要介紹了Git如何實(shí)現(xiàn)撤銷提交(命令行+IDEA)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(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í)行成功之后,我們再執(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. 未提交就撤銷

對于第一小節(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 檢測不到文件處于未提交狀態(tài),需要我把 IDEA 關(guān)掉重新打開,IDEA 就能發(fā)現(xiàn)文件處于未提交狀態(tài)了,此時(shí)就可以按照 1 小節(jié)的步驟繼續(xù)回退了,這塊小伙伴們在試驗(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è)提交的對話框,就是一個(gè)普普通通的 commit 對話框,如下:

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)文章

最新評論

佛坪县| 随州市| 始兴县| 益阳市| 聊城市| 石狮市| 越西县| 温泉县| 郓城县| 淳安县| 苍南县| 宿州市| 衡东县| 射阳县| 康乐县| 广安市| 应城市| 临沂市| 威海市| 水城县| 额尔古纳市| 雅安市| 德惠市| 高淳县| 长治市| 梧州市| 石首市| 澜沧| 广南县| 六安市| 邵阳市| 荣昌县| 潼关县| 正镶白旗| 池州市| 林芝县| 马龙县| 呼图壁县| 日土县| 奈曼旗| 兴业县|