Git使用教程-6.撤銷修改

撤銷修改

Git 比其他版本控制系統(tǒng)設(shè)計得優(yōu)秀,因?yàn)?Git 跟蹤并管理的是修改,而非文件。

您會問,什么是修改? 比如您新增了一行,這就是一個修改,刪除了一行,也是一個修改,更改了某些字符,也是一個修改,刪了一些又加了一些,也是一個修改,甚至創(chuàng)建一個新文件,也算一個修改。

撤消對文件的修改

  1. 我們先在README.md文件后面添加一些內(nèi)容,然后使用git status命令查看當(dāng)前狀態(tài)

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ cat README.md
    Hello Git!
    Git is free software.
    Git is a distributed version control system.
    very good!
     
    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git status
    On branch master
    Changes not staged for commit:
      (use "git add <file>..." to update what will be committed)
      (use "git restore <file>..." to discard changes in working directory)
            modified:   README.md
    
    no changes added to commit (use "git add" and/or "git commit -a")
    
    
01.png
  1. 假如,這時候你發(fā)現(xiàn)改錯了,并且不知道原來的內(nèi)容是什么了,那么我們要怎么恢復(fù)文件內(nèi)容呢?這時候我們可以丟棄對工作區(qū)文件的修改。

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git restore README.md
    
     23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
     $ git status
     On branch master
     nothing to commit, working tree clean
    
02.png

取消暫存的文件

  1. 假設(shè)現(xiàn)在你修改了一段代碼并且git add到暫存區(qū),然后你發(fā)現(xiàn)這段代碼有bug。

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ cat README.md
    Hello Git!
    Git is free software.
    Git is a distributed version control system.
    This is a bug.
    
    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git add README.md
    
    
  2. 慶幸的是,在 commit 之前,您發(fā)現(xiàn)了這個問題。用 git status 查看一下,修改只是添加到了暫存區(qū),還沒有提交:

    23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
    $ git status
    On branch master
    Changes to be committed:
      (use "git restore --staged <file>..." to unstage)
            modified:   README.md
    

    Git告訴我們,用命令git restore --staged <file>可以把暫存區(qū)的修改撤銷掉(unstage),重新放回工作區(qū):

    03.png

特別說明,舊版本的git使用的是git reset HEAD <file>命令來把暫存區(qū)的修改撤銷掉(unstage).git reset還可用于版本回退,新版本使用git restore可以把版本回退區(qū)分開來。

  1. 撤銷暫存區(qū)的修改后,然后使用git status命令查看當(dāng)前狀態(tài)。

     23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
     $ git restore --staged README.md
    
     23696@DESKTOP-GKRBCVI MINGW64 ~/Desktop/MyProject (master)
     $ git status
     On branch master
     Changes not staged for commit:
       (use "git add <file>..." to update what will be committed)
       (use "git restore <file>..." to discard changes in working directory)
             modified:   README.md
    
     no changes added to commit (use "git add" and/or "git commit -a")
    

    現(xiàn)在只是工作區(qū)有修改,如果我們不想保留修改了,繼續(xù)使用git restore丟棄修改即可。

    04.png

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Git工具 選擇修訂版本 Git能夠以多種方式來指定單個提交、一組提交或者是一定范圍內(nèi)的提交。 單個修訂版本 可以...
    squarejohn_5dc8閱讀 414評論 0 1
  • Git基礎(chǔ) 獲取Git倉庫的兩種方式 將尚未進(jìn)行版本控制的本地目錄轉(zhuǎn)換為Git倉庫 從其他服務(wù)器==克隆==一個已...
    squarejohn_5dc8閱讀 385評論 0 1
  • 本教程為小甲魚《極客Python之Git實(shí)用教程》課程筆記,大部分為原課程講義,其中穿插了自己實(shí)戰(zhàn)過程中遇到的一些...
    spectre_hola閱讀 172,971評論 13 84
  • 前言: Git作為分布式版本控制系統(tǒng),是我們工作和開源代碼平臺項(xiàng)目管理最火的工具之一,基本上是每個入職的同學(xué)都要熟...
    Felix_lin閱讀 881評論 0 4
  • 唉~我以為休息幾天就不會痛了,看來我還是太天真了,實(shí)在是閑不住了,今天重新開始寫筆記吧,讀者們也注意身體,不要久坐...
    蜘蛛的夢囈閱讀 529評論 0 0

友情鏈接更多精彩內(nèi)容