git中的撤销删除操作总结(git cleangit checkout和git reset)

Posted 非晚非晚

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git中的撤销删除操作总结(git cleangit checkout和git reset)相关的知识,希望对你有一定的参考价值。

文章目录

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)的主要内容,如果未能解决你的问题,请参考以下文章

Git应用详解第二讲:Git删除修改撤销操作

Git使用记录:Git各种撤销操作

git上怎么把commit的代码撤销

Git学习之路- 撤销操作删除文件和恢复文件

Git学习之路- 撤销操作删除文件和恢复文件

git撤销操作总结