
概述
- 在平時工作中使用git難免會送出一些錯誤的檔案到git庫裡,這時候,撤銷吧,怕把正确的檔案删除了,不撤銷重新改又很麻煩,下面,我就從送出的三個階段,來講解如何撤銷錯誤的操作。
Git Add了一個錯誤檔案
解決方法
- 這種情況一般發生在新建立的項目,執行指令:
git add .
指令執行完後發現增加了錯誤的檔案,比如Pycham自動生成的.idea檔案夾。比如下圖:
這時候,我想撤銷add .idea這個操作,可以這麼做:
git reset <file> #撤銷指定的檔案
git reset #撤銷所有的檔案
執行完這個指令後,效果如下:
可以看到.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 diff blog-test.py後結果如下:
可以看到我增加了一行,現在把檔案送出到本地倉庫:
可以看到,本地以及沒有需要送出的檔案了。這時候,我發現,這個修改是錯誤的,我需要撤銷這次commit,我該怎麼做了?
隻撤銷commit操作,保留檔案
執行指令如下:
git reset HEAD~1
執行完效果如下:
可以看到,commit被撤銷了,但是修改的部分還保留着。完美解決。不信看git log
撤銷commit操作,删除變化
執行指令如下:
git reset --hard HEAD~1
執行完後效果如下:
可以看到,我增加的那一行已經沒有了,git log中也沒有了那次的送出記錄:
完美
如何避免
- git status: 檢視是否有不需要的檔案被add進來
- git diff: 檢視檔案的變化部分,是否是想送出的
檢視更多
Git如何取消最新一次的commit
如何删除分支
好,現在有個很嚴重的問題,我的分支裡代碼不用了,現在要删除,怎麼整。
分支沒有push到遠端
删除本地的分支很簡單:
git branch -d branch_name
舉例截圖如下:
分支已經push到遠端
我現在本地和遠端都有一個test分支,如下圖:
執行如下的指令删除本地和遠端的test分支:
git push origin --delete test
git checkout master
git branch -d test
#git branch -D test 如果有未送出的檔案,用它
執行完效果如下:
可以看到都删掉了。
總結
出錯不可怕,可怕的是你不知道為什麼出錯以及如何修複錯誤。所謂亡羊補牢,為時未晚。
為什麼不來我的部落格逛逛了www.bugcode.cn
關注我的公衆号,擷取更多文章