git 撤销本地修改与回退版本

1. 使用 git checkout 撤销本地修改

即放弃对本地已修改但尚未提交的文件的修改,还原其到未修改前的状态。
注意: 已 add/ commit 的文件不适用个方法,应该用本文提到的第二种方法。

命令如下:

1
2
3
4

git checkout . # 撤销对所有已修改但未提交的文件的修改,但不包括新增的文件
git checkout [filename] # 撤销对指定文件的修改,[filename]为文件名

2.使用 git reset 回退项目版本

可以回退到任意已经提交过的版本。已 add / commit 但未 push 的文件也适用。

命令如下:

1
git reset --hard [commit-hashcode]

commit-hashcode是某个 commit 的哈希值,可以用 git log 查看。
因此一般用法是先用 Git log 查看具体commit的哈希值,然后 reset 到那个版本。

说明:
这两个命令都不会对新增文件起作用。因为新增的文件是还未加到 git 的记录里面的,即属于未被 tracked 的状态,所以撤销修改和回退均对其不影响。我们直接手动删除文件就行了。

idea中如何操作

在idea中英文为 reset Head操作按钮,中文为 重置 Head按钮。

mixed

mixed 默认方式,只保留源码,回退commit和index信息

回退之后如下,文件也显示未加入 git 管理

soft

soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit。

hard

hard:彻底回退,本地源码也会变成上一个版本内容
这种方式回退之后,上一次提交的代码也就没有了。

写上commit id,比如 有提交A 提交B, A早于B, 如果不想要B,要填A的commit id。


git 撤销本地修改与回退版本
http://hanqichuan.com/2019/07/23/git/git 撤销本地修改与回退版本/
作者
韩启川
发布于
2019年7月23日
许可协议