win10下git學習-3-恢復到修改之前的某一狀態(reset)

背景:當使用git進行修改並提交(add、commit)之後,發現改錯了,應該回到之前的某一版本,應該怎麼辦呢?

舉例 - 說明:

用【git log --oneline】可以查看到更改的信息,可以看到我已經對1.py(我這裏的gitCode只有1.py這一個文件)做了兩次修改了

舉例 - 問題:

現在忽然發現忘記對第二次修改做個東西,那怎麼補上這個東西,使它還是處於第二次修改的狀態呢?

舉例 - 假設:

現在對1.py做第三次改變,然後進行add操作,如果直接進行commit操作【git commit -m "註釋"】,那就將是第三次改變,與希望的不同。此時,需要做的是:

方法1

git commit --amend --no-edit

amend:表示將當前的add放入上一個修改狀態中,

no-edit:表示不想改“第二次修改”這個評論.

此時再看一下log信息:

可以發現後面的狀態並沒有更改。需要注意的是:這裏的commit-id (紅框部分)已經改變了。

方法2

對文件更改,並add操作後,想要重新進行更改,可以用【git reset 1.py

還是處於第二次修改狀態。

 

上述都是隻進行了【add】操作,沒有【commit】,那【commit】之後,如何返回到之前的修改呢?

舉例:上面圖片可以清楚的看到我已經進行了兩次修改了,且log上都有記錄了,但是我現在反悔了,第二次修改改的是什麼呀,不如不改,那我就想只留下第一修改的記錄怎麼做呢?

可以使用【hard HEAD】,改變當前指針的位置,就是程序語言中指針的意思。

可以看到當前的指針是“第二次修改”的位置,改變指針位置有三種方式:

1. git reset --hard HEAD^(一個角標表示回到上一個位置)
2. git reset --hard HEAD~2(~2表示回到上兩個位置,這是因爲如果要回到上100個位置,總不能寫100個^吧)
3. git reset --hard c95b7c6(c95b7c6表示的是,想要回到位置的commit-id)

可以看到此時就沒有第二次修改了!

但是!!可能又又又反悔了,我又想回到第二次修改了,可是log --oneline已經看不到第二次修改的版本號了,怎麼辦呢?

可以使用【git reflog】查看所有的變化:

git reflog

此時就可以得到第二次修改對應的版本號了~然後用改變指針的方法3進行操作即可,圖片整體說明:

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