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

posted @ 2021-01-26 21:55  温故纳新  阅读(2017)  评论(0编辑  收藏  举报