【Git】不同区域撤销代码{reset、revert}

工作区【磁盘】

关于GIt,当你在工作区也就是硬盘中修改文件内容,也就是下图的状态。

 若你需要撤销此次修改,用到的命令就是

git checkout <changed_file>
git restore <changed_file>    #推荐

因为checkout在分支中也是切换分支的意思,所以这边更推荐使用restore

 这样就撤销本地修改成功了

暂存区【add之后】

当文件已经被add后上传到暂存区后,也就是如下情况

 我们可以使用如下命令来撤销上传,而不修改本地文件

git reset <changed file>/<index>
git resort --staged <changed file>/<index>

其中index是你每次add生成的索引,可以通过索引来回到索引对应的文件状态,用log来查看索引

local git区【commit之后】

当你将代码进行add后再进行commit,就上传到了local git区域,这时候也使用git reset来进行撤销。而这撤销又分为这三种模式 

git reset --soft    #回退版本并且保留工作区和暂存区
git reset --hard    # 回退版本并且放弃所有工作区和暂存区
git reset --mixed    # 回退版本保留工作区,放弃暂存区        【默认使用】

注意谨慎使用hard,虽然git所有命令都能撤销,但是hard会删除你工作区也就是本地修改的文件,这样子如果后悔了要找回还是有些麻烦的

git revert

git revert 和 git reset的区别:

git revert是用一次新的commit来回滚之前的commit,git reset是直接删除指定的commit。

git相当于执行一个反向命令,比如我增加了一个file1,现在我不要了那就可以进行revert或reset来进行撤销,但是当时又需要file1,那么如果你使用reset命令就傻眼了,如果我们使用的是revert,则再执行一次就变成的增加file1命令了,每次执行revert命令的流程是:增加file1->删除file1->增加file1。下面来进行演示一下。

这里进行了file1和file2的两次上传,现在我们要将file1撤销,之后再添加回来,file2不进行修改

 这时我们发现file1本地已经被撤销了,但是我们查看index还是能找到file1的上传记录,revert的其中一个优点就是可以保留上传记录。

这时我们通过revert后的revert索引来进行revert,就发现file1又在本地恢复了,并且自动上传了。

  • 22
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值