win10下git学习-3-恢复到修改之前的某一状态(reset)

背景:当使用git进行修改并提交(add、commit)之后,发现改错了,应该回到之前的某一版本,应该怎么办呢?

举例 - 说明:

win10下git学习-3-恢复到修改之前的某一状态(reset)_第1张图片

用【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:表示不想改“第二次修改”这个评论.

win10下git学习-3-恢复到修改之前的某一状态(reset)_第2张图片

此时再看一下log信息:

win10下git学习-3-恢复到修改之前的某一状态(reset)_第3张图片

可以发现后面的状态并没有更改。需要注意的是:这里的commit-id (红框部分)已经改变了。

方法2

对文件更改,并add操作后,想要重新进行更改,可以用【git reset 1.py

win10下git学习-3-恢复到修改之前的某一状态(reset)_第4张图片

还是处于第二次修改状态。

 

上述都是只进行了【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)

win10下git学习-3-恢复到修改之前的某一状态(reset)_第5张图片

可以看到此时就没有第二次修改了!

但是!!可能又又又反悔了,我又想回到第二次修改了,可是log --oneline已经看不到第二次修改的版本号了,怎么办呢?

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

git reflog

win10下git学习-3-恢复到修改之前的某一状态(reset)_第6张图片

此时就可以得到第二次修改对应的版本号了~然后用改变指针的方法3进行操作即可,图片整体说明:

win10下git学习-3-恢复到修改之前的某一状态(reset)_第7张图片

你可能感兴趣的:(git,git)