每次 git add . 和 git commit -m "描述" 之后都会产生一个唯一的 commit 哈希值。可以用 git log查看。如下:
而有时候 git commit 之后,发现没有add或很快又新的修改了,不想第二次 commit,修改的文件就没显示了,这个时候想回到 commit之前添加新的修改,该怎么办?
先看git reset 的3种方式:
git reset --soft [commit哈希值]
git reset --mixed [commit哈希值]
git reset --hard [commit哈希值]
情景分析:
假如现在 未修改之前的commit 哈希值 为 123.
我们做了修改,并add .和commit了,这个时候看不到我们的改动记录了。commit哈希值为 456
此时突然发现还有新的修改,而不想再次commit。想撤销456回到123,并保留改动的记录,该怎么办。
这个时候我们可以用:
git reset --mixed 123 就可以回到123了,并保留了所有改动记录,此时git status会有所有改动的记录为红色。
而用
git reset --soft 123 也会回到123,也会保存改动的记录,不过会自动帮你 git add . 用git status查看是绿色。
而用
git reset --hard 123 也会回到123,不过不会保留任何你改动的记录(慎用)
git reset 原理图转载:
git revert原理图转载如下: