您的位置:首页 > 健康 > 美食 > 【Git】不同区域撤销代码{reset、revert}

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

2024/12/24 1:40:45 来源:https://blog.csdn.net/CatShitK/article/details/140683174  浏览:    关键词:【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又在本地恢复了,并且自动上传了。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com