天天看點

git add 撤銷_Git各種錯誤操作撤銷的方法

git add 撤銷_Git各種錯誤操作撤銷的方法

概述

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

Git Add了一個錯誤檔案

解決方法

  • 這種情況一般發生在新建立的項目,執行指令:

git add .

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

git add 撤銷_Git各種錯誤操作撤銷的方法

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

git reset <file> #撤銷指定的檔案
git reset #撤銷所有的檔案
           

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

git add 撤銷_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 add 撤銷_Git各種錯誤操作撤銷的方法

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

git add 撤銷_Git各種錯誤操作撤銷的方法

可以看到我增加了一行,現在把檔案送出到本地倉庫:

git add 撤銷_Git各種錯誤操作撤銷的方法

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

隻撤銷commit操作,保留檔案

執行指令如下:

git reset HEAD~1
           

執行完效果如下:

git add 撤銷_Git各種錯誤操作撤銷的方法

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

git add 撤銷_Git各種錯誤操作撤銷的方法

撤銷commit操作,删除變化

執行指令如下:

git reset --hard HEAD~1
           

執行完後效果如下:

git add 撤銷_Git各種錯誤操作撤銷的方法

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

git add 撤銷_Git各種錯誤操作撤銷的方法

完美

如何避免

  • git status: 檢視是否有不需要的檔案被add進來
  • git diff: 檢視檔案的變化部分,是否是想送出的

檢視更多

Git如何取消最新一次的commit

如何删除分支

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

分支沒有push到遠端

删除本地的分支很簡單:

git branch -d branch_name
           

舉例截圖如下:

git add 撤銷_Git各種錯誤操作撤銷的方法

分支已經push到遠端

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

git add 撤銷_Git各種錯誤操作撤銷的方法
git add 撤銷_Git各種錯誤操作撤銷的方法

執行如下的指令删除本地和遠端的test分支:

git push origin --delete test
git checkout master
git branch -d test
#git branch -D test 如果有未送出的檔案,用它
           

執行完效果如下:

git add 撤銷_Git各種錯誤操作撤銷的方法
git add 撤銷_Git各種錯誤操作撤銷的方法

可以看到都删掉了。

總結

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

為什麼不來我的部落格逛逛了​www.bugcode.cn

git add 撤銷_Git各種錯誤操作撤銷的方法

關注我的公衆号,擷取更多文章

繼續閱讀