git中的撤销、删除操作总结(git clean、git 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 add的状态,结合第4步可以回退至修改前的版本
git reset --soft HEAD^

# 方法四:使用远程仓库覆盖本地仓库
git reset --hard origin/master 

5. 已推送的修改

如果把本地的代码push至远程,此时可以采用回滚的形式回退版本,然后强制推送覆盖远程仓库。

以此执行下列代码:

git reset --hard HEAD^ #回退至上一版本
git push origin HEAD --force #强制提交一次,之前错误的提交就从远程仓库删除

如果还想要找回之前的修改,可以使用git reflog,或者结合第四步一起使用。

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

非晚非晚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值