檢查修改
瞭解了基本概念之後,我們來談一談犯錯誤之後如何撤銷的問題。首先,我們要了解如何檢查這 3個步驟當中每一個步驟修改了什麼,然後才好判斷有沒有修改成功。檢查修改的二級命令都相同,都是 diff,只是引數有所不同。
- 已修改,未暫存(git diff)
- 已暫存,未提交(git diff –cache)
- 已提交,未推送(git diff master origin/master)
撤銷修改
- 已修改,未暫存(git diff)(git reset –hard)
- 已暫存,未提交(git diff –cache)(git reset –hard)
- 已提交,未推送(git diff master origin/master)(git reset –hard origin/master)
- 已推送(git reset –hard HEAD^ / git push -f)
已修改,未暫存
# 如果我們只是在編輯器裡修改了檔案,還沒有執行`git add`
git checkout .
# 或者
git reset --hard
已暫存,未提交
# 如果我們已近執行了`git add .`還沒有執行`git commit`
git reset
git checkout .
# 或者
git reset --hard
已提交,未推送
# 你的手太快,執行了`git add .`,又執行了`git commit`,這個時候你的程式碼進入了你的本地倉庫,
git reset --hard origin/master
已推送
# 很不辛,你的手實在太快了。你既`git add`又`git commit`還`git push`,這個時候你的程式碼已近進入的遠端倉庫
# 不保留提交歷史
git reset --hard HEAD^
git push -f
# 或者
# 保留提交歷史
git revert < sha >