欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、基于命令行

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

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

如下圖:

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

總結

git status
回顯 modified:	yourfile

git checkout -- yourfile

git status
回顯working tree clean

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

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

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

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

如下圖:

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

總結

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

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

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

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

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

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

看下面一系列的操作:

通過 git log 查看當前提交日志:

git log --pretty=short

通過 git reset HEAD^^ 向前回退兩個版本:

git reset --hard HEAD^^

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

git reset --hard 695ce1fe

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

git reset --hard HEAD~1

當然以上操作都是基于命令行的,如果你命令行操作比較熟練的話,其實命令行操作比 IDEA 上點點點要快很多。

4. 遠程倉庫的代碼想要撤銷

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

二、基于 IDEA

1. 未提交就撤銷

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

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

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

2. commit 了想撤銷

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

也可以直接點擊 IDEA 右上角的時鐘圖標,快速打開提交日志:

提交日志類似下面這樣:

此時的回退就分情況了。

首先這個撤銷操作分兩種:

  • Revert Commit
  • Undo Commit

我們分別來看。

Undo Commit

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

其他的 commit 上右鍵單擊:

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

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

選中后,直接點擊 OK,撤銷最近一次的 commit。

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

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

Revert Commit

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

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

操作方式如下:

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

此時會彈出來一個提交的對話框,就是一個普普通通的 commit 對話框,如下:

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

3. push 了想撤銷

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

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

所以一定是先commit到本地倉庫,改完確認了再push到遠程倉庫。

總結

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

相關文章

  • Git 教程之基本操作詳解

    Git 教程之基本操作詳解

    本文主要主要介紹Git 基本操作,這里整理了詳細的基本操作資料,包括基本命令使用方法,有需要的朋友可以參考下
    2016-09-09
  • WebSocket部署到服務器出現(xiàn)連接失敗問題的分析與解決

    WebSocket部署到服務器出現(xiàn)連接失敗問題的分析與解決

    這篇文章主要給大家介紹了關于WebSocket部署到服務器出現(xiàn)連接失敗問題的分析與解決方法,文中給出了詳細的介紹供大家參考學習,文末也給出了demo下載地址,需要的朋友們可以下載學習,下面隨著小編來一起學習學習吧。
    2017-10-10
  • 分享五個最佳編程字體

    分享五個最佳編程字體

    這篇文章主要介紹了分享五個最佳編程字體,需要的朋友可以參考下
    2016-10-10
  • 永久解決VSCode終端中文亂碼問題

    永久解決VSCode終端中文亂碼問題

    這篇文章主要介紹了永久解決VSCode終端中文亂碼問題,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 前端常用的Chrome調(diào)試技巧最全匯總

    前端常用的Chrome調(diào)試技巧最全匯總

    作為一個前端開發(fā)者,我們每時每刻都跟瀏覽器打交道,在開發(fā)的過程中,我們需要不斷的在瀏覽器中查看編寫的成果,合理使用瀏覽器的控制臺功能,這篇文章主要給大家介紹了關于前端常用Chrome調(diào)試技巧的相關資料,需要的朋友可以參考下
    2024-09-09
  • 提高github下載速度的方法可達到2MB/s(100%有效)

    提高github下載速度的方法可達到2MB/s(100%有效)

    這篇文章主要介紹了提高github下載速度的方法可達到2MB/s(100%有效),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • vscode 一鍵規(guī)范代碼格式的實現(xiàn)

    vscode 一鍵規(guī)范代碼格式的實現(xiàn)

    這篇文章主要介紹了vscode 一鍵規(guī)范代碼格式的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • jQuery會死嗎?我為什么不用vue寫富文本

    jQuery會死嗎?我為什么不用vue寫富文本

    jQuery會死嗎?我為什么不用vue寫富文本,本文通過文字實例代碼相結合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 使用TeXLive2022和VSCode安裝配置步驟(LaTeX寫論文)

    使用TeXLive2022和VSCode安裝配置步驟(LaTeX寫論文)

    這篇文章主要介紹了使用TeXLive2022和VSCode的安裝配置步驟,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • 2013年CIO需要知道的八句格言

    2013年CIO需要知道的八句格言

    2013年CIO需要知道的八句格言,更簡單更努力
    2012-12-12

最新評論