天天看點

怎麼撤銷 git commit 送出的代碼

問題

比如:我在項目裡面添加了一個新的元件 ​

​gitTest.vue​

​,

怎麼撤銷 git commit 送出的代碼

寫完之後,我就送出代碼:

git add .
git commit -m '送出git測試元件'      
怎麼撤銷 git commit 送出的代碼

git reset 指令

​​菜鳥教程:git reset 指令​​

git reset 指令用于回退版本,可以指定退回某一次送出的版本。

git reset 指令文法格式如下:

git reset [--soft | --mixed | --hard] [HEAD]      
  • -mixed為預設,可以不用帶該參數,用于重置暫存區的檔案與上一次的送出(commit)保持一緻,工作區檔案内容保持不變。
  • 不删除工作空間改動代碼,撤銷 commit,并且撤銷​

    ​git add .​

    ​ 操作
  • ​git reset --mixed HEAD^​

    ​​ 和​

    ​git reset HEAD^​

    ​ 效果是一樣的
  • –soft參數用于回退到某個版本
  • 不删除工作空間改動代碼,撤銷 commit,不撤銷​

    ​git add .​

  • –hard參數撤銷工作區中所有未送出的修改内容,将暫存區與工作區都回到上一次版本,并删除之前的所有資訊送出
  • 删除工作空間改動代碼,撤銷 commit,撤銷​

    ​git add .​

執行個體:

$ git reset HEAD^                # 回退所有内容到上一個版本  
$ git reset HEAD^ hello.php      # 回退 hello.php 檔案的版本到上一個版本  
$ git reset 052e                # 回退到指定版本
$ git reset --soft HEAD~3        # 回退上上上一個版本
$ git reset --hard HEAD~3        # 回退上上上一個版本  
$ git reset --hard bae128            # 回退到某個版本回退點之前的所有資訊。 
$ git reset --hard origin/master    # 将本地的狀态回退到和遠端的一樣      

注意:謹慎使用 –hard 參數,它會删除回退點之前的所有資訊。

HEAD 說明:

  • ​HEAD​

    ​ 表示目前版本
  • ​HEAD^​

    ​ 上一個版本
  • ​HEAD^^​

    ​ 上上一個版本
  • ​HEAD^^^​

    ​ 上上上一個版本

可以使用 ~數字表示

  • ​HEAD~0​

    ​ 表示目前版本
  • ​HEAD~1​

    ​ 上一個版本
  • ​HEAD~2​

    ​ 上上一個版本
  • ​HEAD~3​

    ​ 上上上一個版本

解決

執行完commit後,想撤回commit,怎麼辦?

通過上面的 git reset 指令學習,可以知道:使用下面的指令

# 回退上一個版本,然後需要删掉代碼
git      

執行完我們發現已經回退到了送出前的狀态

可以輸入檢視日志指令:

git      

拓展