引言
作为初入职场的小萌新,你刚学会了怎么提交代码,就很潇洒的把自己的test-bug-fix的代码提交到了将要发布到线上生产环境的分支上,嗯……我猜你要挨打了。下辈子小心点,这次没关系,我们有revert。
关于revert最最最最最最最最好理解的解释
解释版本一:我最后一次提交的代码是正确的,然后你提交了自己的错误代码,revert就是将你改的所有代码剔除,然后生成一个最后一次提交的正确的那时候的版本;注意哦这个新生成的版本跟你提交前的版本——最后一次提交的代码是一样的哦~
如果第一个解释没看懂,请看第二个:
解释版本二:我们的组长最后一次修改完bug后提交了代码(版本A),准备发到线上去,审核已经通过了,你突然告诉他你说你刚才提交了代码(版本B),还是自己测试的代码,不健壮……组长和蔼的说没事,这次扣300个元子长长记性,下次注意。然后只见组长潇洒的打开了命令窗口输入了
git revert
开头的神秘代码,把你的钱揣进了自己口袋。具体发生了什么呢,其实就是组长使用revert命令将你的提交(版本B)剔除了,然后生成了新的版本(版本C),此版本(版本C)里的代码跟最初的版本(版本A)是一样的。
这下很清楚了 吧,赶紧来看操作深入理解
操作案例
初始化一个git项目:
git init 项目名(文件夹名)
新建文件A.txt并提交:
touch A.txt
gitadd ./
git commit -m"项目init"
查看日志:
git log
可以看到我们已经成功提交了。
然后修改文件A.txt,在里面添加两行字,然后提交;
vim A.txt
gitadd A.txt
git commit -m"A.txt的 版本A"
此时查看日志:提交修改成功,我们可以将此作为版本A
查看此版本的文件内容:
cat A.txt
,可以看到只有一行,两个edit;然后看文件夹,只有一个A.txt
然后我添加文件B.txt,再加一行内容,然后提交
touch B.txt
vim B.txt
gitadd ./
git commit -m"add B.txt 版本B"
然后查看日志
git log
,查看文件内容
cat B.txt
,查看文件夹中文件
ls
,可以看到提交成功了,而且我新加了文件B.txt并且在里面添加了内容BBBBB;
这个B.txt是误提交,我不要这次提交,应该回到之前版本A;
执行:
git revert 14345c165b488d2e616a3793ec5fd158b21bb91a
然后会弹出一个vim编辑窗口,这时我们输入新的提交的message即可。也就是剔除了版本B的、内容跟版本A一样的新版本——版本C的message;如图生成的message我不动,在其后面我输入:revert版本C:
保存退出,可以看到我们已经revert成功了:
究竟是不是这样的呢,我们看日志:
git log
可以看到确实是有版本A。也有版本B,也有版本C;
而且版本C也就是现在的版本内容应该跟版本A是一样的,也就是只有A.txt,没有我的B.txt的文件,我们看一下这个版本C的提交是不是这样:
git show 2e0b4c6
可以看到只有A.txt文件的操作。安全下车,下次注意,可再别用了,下课~~~~
版权归原作者 户伟伟 所有, 如有侵权,请联系我们删除。