gi命令中reset,revert的区别和使用

Git是一个分布式版本控制软件,最初的目的是更好的管理Linux内核开发设计,由林纳斯·托瓦兹创作。
现在的软件开发生产中,大部分都是基于git来管理的,相比于svn,有更多更好的特性。平时用来管理代码分支版本特别轻松。但有时候会碰到几种情况:

  1. 已提交的代码想撤回;
  2. 提交的代码有bug,想跳过提交代码的版本;
  3. 分支管理混乱,想要整理一下。

  4. 综合来说,就是碰到问题想撤回,使用什么git命令来操作。
    网上搜索一下,发现主要有几个命令有相似的功能,但是有时会分不清楚,不知道使用哪一个,用了之后,写好的代码会不会消失不见了?会不会导致代码冲突等一系列问题。这篇文章就结合平时的使用情况以及查阅资料的情况下,做一个总结。

reset

git reset命令,可以理解为"修改历史",达成的效果是:代码直接回退到指定版本,在指定版本之后的提交记录通通消失(其实还在,只是还没有加入暂存区)。以master分支为例,假设当前提交记录为 no.5,如果我们想回到no.3,有两种方式,使用Git命令或者使用idea菜单。这里使用菜单栏。右键no.3,选择Reset Current Branch to Here。会有四种方式任你选择,其实就是命令git reset后指定的参数:
Soft:重置到指定版本,但是指定版本和当前版本之间的修改文件还是会保存在暂存区不做修改,即git add 后的状态,等待再一次commit;
Mixed(默认)重置到指定版本,但是指定版本和当前版本之间的修改文件不会保存在暂存区,即还需要git add 添加到暂存区和之后的git commit 操作,是idea的默认操作:
Hard:重置到指定版本,但是指定版本和当前版本之间的修改文件都会消失!!!慎重选择!!慎重选择!!慎重选择!!;
Keep:b1分支编辑一些文件,并且已经提交,接着继续工作,但是现在你发现当前在工作区中的内容应该属于b2分支,与之前的提交没有关系。此时,可以开启一个新的分支b3,并且保留着工作区中已经添加或者修改的的内容;
默认情况下,点击reset之后,版本回退到no.3,并且版本树上之后的提交版本都会消失,在修改记录里面会有no.5版本修改的内容放在暂存区,根据需要增删即可。

revert

git revert命令,可以理解为"撤销",但是把撤销的操作作为一个新的记录来提交。还以master分支举例。假设当前的版本no.5,想要撤销到no.3版本的代码,使用git revert命令或者idea在Local Changes里面,右键点击no.3选择git revert,当前代码就会回退到no.3版本时候的代码。但是~,划重点:
此次撤销操作不会影响记录树,也就是no.4,no.5版本并不会消失,而是在no.5版本之后,多出来一个no.6版本,这个版本的内容和no.3一毛一样!!!


git reset,git revert 的区别已经搞清楚了,工作中可以按照个人的需求去使用,但是在使用个别命令时,一定充分考虑,仔细确认过之后,再去操作。

发布了43 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/u013243938/article/details/103443592
今日推荐