Git學習之Git 重置

==============================
分支遊標master
==============================
引用 refs/heads/master 在有新的提交發生的時候,指向新的提交。
(1) 將master遊標重置到舊的提交上(注意:使用了--hard 參數,會破壞工作區未提交的改動)
 $ git reset --hard HEAD^
(2) 重置命令不僅可以重置到前一次提交,而且還可以使用提交ID重置到任何一次提交
 git reset --hard 9e8a761
 使用重置命令會丟棄歷史,即曾經的修改會消失。

=============================
用reflog 挽救錯誤的重置
=============================
(1) 查看master分支的日誌文件
 $ tail -5 .git/logs/refs/heads/master
(2) 使用git reflog 命令的子命令可以顯示此文件的內容
 $ git reflog show master | head -5
(3) 重置 master 爲兩次改變之前的值
 $ git reset --hard master@{2}
(4) 使用--hard參數 $ git reset --hard <commit>
 替換引用的指向:引用指向新的提交ID
 替換暫存區:暫存區的內容和引用指向的目錄樹一致
 替換工作區:工作區的內容變的和暫存區一致,也和HEAD所指向的目錄樹內容相同
(5) git reset --soft <commit>
 只更改引用的指向,不改變工作區和暫存區
(6) 使用參數 --mixed 或不使用參數(默認爲--mixed)
 更改引用的指向及重置暫存區,不改變工作區
(7) git reset
 使用HEAD指向的目錄樹重置暫存區,但是不更改工作區
(8) git reset HEAD
 使用HEAD指向的目錄樹重置暫存區,但是不更改工作區
(9) git reset -- filename
 僅將文件filename的改動撤出暫存區,其它文件不變
(10)git reset HEAD filename
 僅將文件filename的改動撤出暫存區,其它文件不變
(11)git reset HEAD^
 工作區不改變,但是暫存區會回退到上一次提交之前,引用也會回退一次
(12)git reset --mixed HEAD^
 工作區不改變,但是暫存區會回退到上一次提交之前,引用也會回退一次
(13)git reset --hard HEAD^
 徹底撤銷最近的提交。引用回退到上一次,而且工作區和暫存區都會回退到上一次提交的狀態。
 自上一次以來的提交丟失。 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章