Git进阶,版本回滚和控制

Git的一点小进阶

版本的控制

在使用git多次提交后,会产生多次的版本,打开曾经push过的项目,在左下角的Git中可以看见提交过得版本

Git进阶,版本回滚和控制_第1张图片

而在开发过程中难免遇到版本出问题而需要回退版本,首先我们要了解以下一些概念

1.版本id

版本id在文件被push后会产生一个相应的版本id

(和项目本身版本编号无关!)

有以下两种方式查看

通过Git Bash

这里以我自己的一个代码my first try为例

  1. 打开项目所在文件夹,右键运行Git Bash

Git进阶,版本回滚和控制_第2张图片

输入git log即可查看到不同版本的对应id

Git进阶,版本回滚和控制_第3张图片

例如,*”第一次commit“*的版本id为60714……后面那一串,这一串数字事实上是通过加密id得到的,但他仍然生效

若想看见原始的id,你可以输入git reflog,如图

Git进阶,版本回滚和控制_第4张图片

每一次操作前面的7位字符就是版本id。可以看到我这里进行了很多次提交以及回滚

通过Github来看

打开Git账号,找到对应的仓库打开

点击commits
Git进阶,版本回滚和控制_第5张图片

在右侧即可看见版本的id
Git进阶,版本回滚和控制_第6张图片

2.版本控制的原理

图例
第一次提交
第二次提交
第三次提交
第一次commit
版本(空的)
写了一个6
新加了文件夹啊
版本指针

事实上版本控制是由一个版本指针组成的,在每一次提交后,指针都会进行相应地更新,而版本控制的原理就是通过控制版本指针的指向来确定版本。

下面来通过实例了解版本的回滚

3.向后回滚

加入我现在在版本*“新加了文件夹啊”,但是我对他不满意,我要回到版本“写了一个6”*

通过查询,我知道版本*“写了一个6”*的id为8726583

接下来在Git bash中进行操作

输入git reset --hard id

以我的例子,我输入的是git reset --hard 8726583

!!注意此时你的本地库中的代码同样被回溯了,即你的idea中也回溯到只提交了版本*“写了一个6”*,后面的版本是无法看见的!!!!

Git进阶,版本回滚和控制_第7张图片

我们能看见提示

HEAD is now at (id) message

接下来,对这个id的版本文件进行一个push操作

输入git push -f -u 本地仓库分支 远程仓库分支

-f表示强制push

-u表示使用默认仓库

例如,我的本地分支为try,远程分支为master

(本地分支在idea中首次push时可以自定义,默认为origin)

那么我的输入就是git push -f -u try master

和正常push一样可能会出现网络问题(习惯就好)

若连接正常,则会弹出一个验证界面,在验证界面输入账号密码授权即可

回溯成功后会看见

Git进阶,版本回滚和控制_第8张图片

然后我们打开Github看看

原先

Git进阶,版本回滚和控制_第9张图片

现在

Git进阶,版本回滚和控制_第10张图片

我们的版本成功被回溯了!!!

4.向前回滚

在向后回滚后,相信大家也看到了问题,那就是原先的新的版本的文件和id都消失了

那么此时要如何进行想前回滚呢?

没错,回滚完我又突然觉得版本*“新加了文件夹啊”*,简直是一个超棒的版本!

此时上面提到的两种log的获取就起到了作用,在reflog中,我们依然能找到*“新加了文件夹啊”*的id不是么

它的id为54064bd

重复向后回滚的操作指令again!

Git进阶,版本回滚和控制_第11张图片

回滚又一次成功啦

总结

  1. 获取版本id
  2. 修改版本指针
  3. 进行push操作

你可能感兴趣的:(小白,git,github)