問題
比如:我在項目里面添加了一個新的組件 gitTest.java
,
寫完之后,我就提交代碼:
git add . git commit -m '提交git測試組件'
git reset 命令
git reset 命令用於回退版本,可以指定退回某一次提交的版本。
git reset 命令語法格式如下:
git reset [--soft | --mixed | --hard] [HEAD]
-mixed 為默認,可以不用帶該參數,用於重置暫存區的文件與上一次的提交(commit)保持一致,工作區文件內容保持不變。
不刪除工作空間改動代碼,撤銷 commit,並且撤銷 git add . 操作
git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一樣的
–soft 參數用於回退到某個版本
不刪除工作空間改動代碼,撤銷 commit,不撤銷 git add .
–hard 參數撤銷工作區中所有未提交的修改內容,將暫存區與工作區都回到上一次版本,並刪除之前的所有信息提交
刪除工作空間改動代碼,撤銷 commit,撤銷 git add .
實例:
$ git reset HEAD^ # 回退所有內容到上一個版本 $ git reset HEAD^ hello.php # 回退 hello.php 文件的版本到上一個版本 $ git reset 052e # 回退到指定版本 $ git reset --soft HEAD~3 # 回退上上上一個版本 $ git reset --hard HEAD~3 # 回退上上上一個版本 $ git reset --hard bae128 # 回退到某個版本回退點之前的所有信息。 $ git reset --hard origin/master # 將本地的狀態回退到和遠程的一樣
注意:謹慎使用 –hard 參數,它會刪除回退點之前的所有信息。
HEAD 說明:
• HEAD 表示當前版本
• HEAD^ 上一個版本
• HEAD^^ 上上一個版本
• HEAD^^^ 上上上一個版本
可以使用 ~數字表示
• HEAD~0 表示當前版本
• HEAD~1 上一個版本
• HEAD~2 上上一個版本
• HEAD~3 上上上一個版本
解決
執行完commit后,想撤回commit,怎么辦?
通過上面的 git reset 命令學習,可以知道:使用下面的命令
# 回退上一個版本,然后需要刪掉代碼 git reset --hard HEAD~1
執行完我們發現已經回退到了提交前的狀態
可以輸入查看日志命令:
git log --oneline -10
拓展
推薦閱讀:Git 工具 - 重置揭密