Github撤銷更改,用於記錄與分享,共勉。
有時我們在使用GitHub的時候,修改了一部分內容,但是我們發現思路不符合,但是文件已經修改了很多,不可能一一返回修改,此時我們需要恢復到上次提交內容。
場景1:
需要撤銷的內容文件屬於未跟蹤的狀態,即只修改但是沒有運行git add 和commit命令的情況。
運行git status查看類似以下狀態:
撤銷修改的方法:
git checkout .
會自動恢復到最近一次提交的狀態,也就是修改前的狀態。
情景2:
需要撤銷的內容已經運行過git add命令,但是未執行git commit命令提交。
撤銷修改的方法:
git reset
git checkout .
git reset命令會刪除暫存的更改,即與情景1類似;git checkout .命令恢復已經修改的文件。
情景3:
需要撤銷的內容運行了git add命令和git commit命令。
我們新建一個test.c文件來測試。
解決方法:
git reset --hard HEAD^
這樣會直接恢復到上次提交的狀態,原來新建的文件會直接被刪除,修改的文件也會被複原。
如果只是想撤銷提交,不想刪除本地文件,可以使用以下方法:
git reset --soft HEAD^
這樣操作後就只是撤銷了commit修改的內容依然是可以保留的。恢復到情況2的情況。
HEAD^:表示上一個版本,即上一次的commit,也可以寫成HEAD~1。
如果是進行兩次commit,都想撤回,那麼可以使用HEAD~2。
--soft:不刪除工作空間的改動代碼 ,只撤銷commit,不撤銷git add file。
--hard: 刪除工作空間的改動代碼,撤銷commit且撤銷add。
情景4:
需要撤回的內容已經push推送到遠程服務器,即已經可以在GitHub網頁上看到修改的內容。但是發現內容有錯誤的地方,需要撤銷上次推送的內容並且改正。
解決方法:
1.先撤回commit提交
git reset --soft HEAD^
2.撤銷add跟蹤
git reset HEAD + 文件名
或者撤銷全部add的文件:
git reset
3.重新修改文件後重新提交:
git add .
git commit -m “註釋:重新提交的正確內容”
4.強制推送
git push --force
參數--force爲強制推送,這樣操作後,就可以到GitHub網頁上看,之前錯誤的提交已經被重新提交的正確內容取代。
到此,GitHub撤銷更改的操作已經完畢。
此文是自我學習的記錄與分享,如果文中有不對的地方,請不吝留言指正,感謝大家。