git 撤销修改
git相关概念图

情况1:只在本地工作区(workspace)修改了文件A(包括删除文件A),但还没有使用 git add 把A的修改暂存到暂存区(index)
这时我们可以撤销对文件内容的修改,也可以撤销对文件A的删除,但是新建的文件无法撤销
撤销方法:
// 放弃单个文件修改
git checkout -- 指定文件
// 放弃所有的文件修改
git checkout .
实例如下:
1)撤销对文件f2.txt内容的修改

使用命令 git checkout -- f2.txt 撤销本地工作区修改

2)撤销本地工作区的删除操作

这时我们删除文件f1.txt

使用命令 git checkout -- f1.txt 撤销文件f1.txt的删除

3)无法撤销新增的文件
我们新增文件f3.txt

情况2:已经使用了 git add 暂存了本地修改
撤销方法:
// 撤销单个文件
git reset head 文件名
// 放弃所有的暂存
git reset head .
实例如下:
使用命令 git reset head f2.txt 撤销文件f2.txt的 git add 操作

可以看到撤销暂存区(index)的修改后,又回到情况1了
情况3:已经使用了git commit提交到本地仓库了
撤销方法:
// 撤销回滚到上一个提交的状态
git reset --hard head^
// 回滚到指定commit
git reset --hard 提交id
实例如下:
1)撤销到上一个提交

修改文件f2.txt,然后 git add ,git commit


使用命令 git reset --hard head^ 撤销到上一个commit


2)回滚到指定版本
我们先修改文件f2.txt提交两次,分别为 commit1和commit2


这时我们回滚到commit1,先使用 git log 命令获取commit1的commit编号


然后使用命令 git reset --hard d9f9b8066961a8c36077c959f8632232835095cc 回滚到commit1

参考链接
https://www.jianshu.com/p/37f3a7e4a193

浙公网安备 33010602011771号