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