<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          IDEA 中如何完成 Git 版本回退?

          共 2741字,需瀏覽 6分鐘

           ·

          2022-03-04 01:44

          有小伙伴問如何在 IDEA 中進(jìn)行 Git 的版本回退?

          其實(shí)這個(gè)松哥之前寫過文章,但是時(shí)間久遠(yuǎn)了,所以今天再和小伙伴們重新捋一捋這個(gè)話題,順便也來聊聊如何在 IDEA 中進(jìn)行 Git 的版本回退。

          Git 中的撤銷操作,我們可以歸納為四類:

          1. 工作區(qū)的代碼想撤銷
          2. add到暫存區(qū)的代碼想撤銷
          3. 提交到本地倉庫的代碼想撤銷
          4. 遠(yuǎn)程倉庫的代碼想要撤銷

          1. 基于命令行

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

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

          p182

          首先我們執(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ù)了。

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

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

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

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

          p183

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

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

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

          1. 可以使用 HEAD^ 來描述版本,一個(gè) ^ 表示前一個(gè)版本,兩個(gè) ^^ 表示前兩個(gè)版本,以此類推。
          2. 也可以使用數(shù)字來代替 ^,比如說前 100 個(gè)版本可以寫作 HEAD~100
          3. 也可以直接寫版本號(hào),表示跳轉(zhuǎn)到某一個(gè)版本處。我們每次提交成功后,都會(huì)生成一個(gè)哈希碼作為版本號(hào),所以這里我們也可以直接填版本號(hào),哈希碼很長,但是我們不用全部輸入,只需要輸入前面幾個(gè)字符即可,就能識(shí)別出來。

          看下面一系列的操作:

          1. 通過 git log 查看當(dāng)前提交日志:
          p184
          1. 通過 git reset HEAD^^ 向前回退兩個(gè)版本:
          p185
          1. 查看日志,發(fā)現(xiàn)最后一次提交的版本號(hào)是 695ce1fe,利用 git reset --hard 695ce1fe 命令回到回退之前的狀態(tài):
          p186
          1. 通過 git reset --hard HEAD~1 回到上一個(gè)版本:
          p187

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

          1.4 遠(yuǎn)程倉庫撤銷

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

          2. 基于 IDEA

          看懂了命令行操作,再看基于 IDEA 的操作就容易多了。

          2.1 未提交就撤銷

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

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

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

          2.2 commit 了想撤銷

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

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

          提交日志類似下面這樣:

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

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

          • Revert Commit
          • Undo Commit

          我們分別來看。

          2.2.1 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;或者也可以像 2.1 小節(jié)介紹的那樣,繼續(xù)撤銷操作。

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

          2.2.2 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)撤銷了,提交日志中也多了一條記錄,如下圖:

          2.3 push 了想撤銷

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

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

          3. 小結(jié)

          好啦,今天和小伙伴們分享了 Git 中的幾個(gè)撤銷問題。

          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲性爱AV网站 | 思思热精品在线视频 | 青草91| 夜夜嗨AV一区二区三区Y.S下载 | 亚洲1区无码 |