git中的撤销删除操作总结(git cleangit checkout和git reset)
Posted 非晚非晚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git中的撤销删除操作总结(git cleangit checkout和git reset)相关的知识,希望对你有一定的参考价值。
文章目录
- 1. 删除未跟踪的文件-git clean
- 2. 已修改,未暂存-git checkout/git reset
- 3. 已暂存,未提交-git reset
- 4. 已提交,未推送-git reset
- 5. 已推送的修改
1. 删除未跟踪的文件-git clean
如下所示,test.cpp
为新建文件,它属于未跟踪的文件。使用git clean
从你的工作目录中删除所有没有tracked,没有被管理过的文件。删除了就找不回了,一定要慎用。
使用git clean -h
查看参数意义:
-q, --quiet 不打印删除文件的名称
-n, --dry-run 演习
-f, --force 强制
-i, --interactive 交互式清除
-d 删除整个目录
-e, --exclude <模式> 添加 <模式> 到忽略规则
-x 也删除忽略的文件
-X 只删除忽略的文件
这里的忽略文件指的是gitignore
。如果担心误删,建议每次使用git clean时候,最好加上交互式参数i,避免误删
。
2. 已修改,未暂存-git checkout/git reset
下列master.txt是被修改过的文件,但是还没有加入暂存区,也就是没有使用git add
操作,此时如果不想要这个修改,可以使用git checkout
删除此次修改,恢复到修改之前的状态。
使用方式:
#方法一:删除master.txt的修改
git checkout master.txt
#方法二:删除所有修改
git checkout .
#方法三:回退
git reset --hard
3. 已暂存,未提交-git reset
下列master.txt,已经提交git add
,但是没有git commit
。
此时如果想要删除此次已经提交的修改,也就是说暂存区的内容不想要了
,或者只是想要把暂存区的内容还原至修改的状态。可以使用下列的一些命令:
#方法一:删除暂存区和修改的工作区
git reset --hard
#方法二:只是把暂存区回退至修改的状态
git reset HEAD
#方法三:只是把暂存区回退至修改的状态
git reset HEAD file.txt
4. 已提交,未推送-git reset
如果已经进行至git commit
,但是还没有push至远程,这种情况直接回退版本就可以了。
#方法一:回退至上一版本
git reset HEAD^
#注意 HEAD 就是回退到当前版本,git reset HEAD^ 回退到上一版本
#方法二:回退至指定版本
git reset <版本号> #git log 去查版本号
# 方法三:只是撤销commit,但是修改还会在
git reset --soft HEAD^
# 方法四:使用远程仓库覆盖本地仓库
git reset --hard origin/master
5. 已推送的修改
如果把本地的代码push至远程,此时可以采用回滚的形式回退版本,然后强制推送覆盖远程仓库。
以此执行下列代码:
git reset --hard HEAD^ #回退至上一版本
git push origin HEAD --force #强制提交一次,之前错误的提交就从远程仓库删除
如果还想要找回之前的修改,可以使用git reflog
,或者结合第四步一起使用。
以上是关于git中的撤销删除操作总结(git cleangit checkout和git reset)的主要内容,如果未能解决你的问题,请参考以下文章