git撤銷修改操作

wums發表於2017-12-06

檢查修改

瞭解了基本概念之後,我們來談一談犯錯誤之後如何撤銷的問題。首先,我們要了解如何檢查這 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 >

相關文章