Git各種錯誤操作撤銷的方法

概述

  • 在平時工作中使用git難免會提交一些錯誤的文件到git庫裡,這時候,撤銷吧,怕把正確的文件刪除了,不撤銷重新改又很麻煩,下面,我就從提交的三個階段,來講解如何撤銷錯誤的操作。

Git Add了一個錯誤文件

Git各種錯誤操作撤銷的方法

解決方法

  • 這種情況一般發生在新創建的項目,執行命令:
  • git add .

命令執行完後發現增加了錯誤的文件,比如Pycham自動生成的.idea文件夾。比如下圖:

Git各種錯誤操作撤銷的方法

這時候,我想撤銷add .idea這個操作,可以這麼做:

git reset #撤銷指定的文件

git reset #撤銷所有的文件

執行完這個命令後,效果如下:

Git各種錯誤操作撤銷的方法

可以看到.idea這個目錄變成了Untracked了。完美解決。

如果你在執行的時候遇到如下的錯誤:

fatal: Failed to resolve 'HEAD' as a valid ref.

如果遇到這個錯誤,就說明你的本地git倉庫從來沒有執行過git commit操作,導致HEAD指針不存在。這時候你可以通過如下的命令撤銷操作:

git rm --cached . #刪除文件

git rm -r --cached . #刪除文件和目錄

如何避免

  • .gitignore: 把不需要提交的文件增加到這個文件git add : 增加指定的文件,少用點號

Git Commit了一個錯誤文件

舉例

我現在有個文件的狀態如下:

Git各種錯誤操作撤銷的方法

執行git diff blog-test.py後結果如下:

Git各種錯誤操作撤銷的方法

可以看到我增加了一行,現在把文件提交到本地倉庫:

Git各種錯誤操作撤銷的方法

可以看到,本地以及沒有需要提交的文件了。這時候,我發現,這個修改是錯誤的,我需要撤銷這次commit,我該怎麼做了?

只撤銷commit操作,保留文件

執行命令如下:

git reset HEAD~1

執行完效果如下:

Git各種錯誤操作撤銷的方法

可以看到,commit被撤銷了,但是修改的部分還保留著。完美解決。不信看git log

Git各種錯誤操作撤銷的方法

撤銷commit操作,刪除變化

執行命令如下:

git reset --hard HEAD~1

執行完後效果如下:

Git各種錯誤操作撤銷的方法

可以看到,我增加的那一行已經沒有了,git log中也沒有了那次的提交記錄:

Git各種錯誤操作撤銷的方法

完美

如何避免

  • git status: 查看是否有不需要的文件被add進來git diff: 查看文件的變化部分,是否是想提交的

查看更多

Git如何取消最新一次的commit

如何刪除分支

好,現在有個很嚴重的問題,我的分支裡代碼不用了,現在要刪除,怎麼整。

分支沒有push到遠程

刪除本地的分支很簡單:

git branch -d branch_name

舉例截圖如下:

Git各種錯誤操作撤銷的方法

分支已經push到遠程

我現在本地和遠程都有一個test分支,如下圖:

Git各種錯誤操作撤銷的方法

Git各種錯誤操作撤銷的方法

執行如下的命令刪除本地和遠程的test分支:

git push origin --delete test

git checkout master

git branch -d test

#git branch -D test 如果有未提交的文件,用它

執行完效果如下:

Git各種錯誤操作撤銷的方法

可以看到都刪掉了。

總結

出錯不可怕,可怕的是你不知道為什麼出錯以及如何修復錯誤。所謂亡羊補牢,為時未晚。


分享到:


相關文章: