GIT撤销修改

作者:matrix 发布时间:2022年4月1日 分类:Linux

撤销本地修改

本地代码仅是修改,还未做任何提交(add/commit操作)

$ git checkout file_name_path_1  file_name_path_2 file_name_path_3...  #撤销指定文件的修改
$ git checkout .   #撤销所有文件的修改

git checkout会直接还原修改的文件到仓库版本

撤销add

$ git reset HEAD file_name_path1  #指定还原文件的add操作

$ git reset HEAD #还原所有文件

撤销commit

已经commit提交,没有push到远端

#修改(替换)掉上次的commit
$ git commit --amend -m "Fix bug #42" 

#撤销commit操作(保留修改)
$ git reset HEAD^  #回到上一提交版本

#撤销commit操作(放弃修改)
$ git reset --hard HEAD^

#手动reset 版本id
$ git reset [--soft|--mixed|--hard]   COMMIT_ID  #COMMIT_ID为需要还原到的正确版本(正确要保留的版本)

--mixed 会保留源码,只是将git commit和index 信息回退到了某个版本.

--soft 保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.

--hard 源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)

撤销push

还原已提交push的修改,本质是新增commit提交

方法1 还原指定版本的修改:

$ git revert COMMIT_ID #COMMIT_ID为需要撤销的版本(丢弃不要的版本)
$ git push #再执行推送

方法2 硬删除之后的所有提交:

$ git reset --hard COMMID_ID #最近提交需要的版本(删除之后的所有提交)
$ git push -f

http://www.ruanyifeng.com/blog/2019/12/git-undo.html

http://blog.csdn.net/zhangkongzhongyun/article/details/8025288

https://www.cnblogs.com/wuyun-blog/p/10026363.html

https://www.jianshu.com/p/37f3a7e4a193