git--版本创建、回滚的原理及演练

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/cx55887/article/details/85304893

声明:文章原稿来源于恩师稀哥。
1. 工作原理
我们来简单说明一下git的工作原理
① 在版本库中创建文件的时候,就有了文件的第一个版本,于此同时会生成一个指针指向这个版本
在这里插入图片描述
② 当修改了code.txt中的内容以后,就生成了第二个版本,但是这个版本是依赖上一个版本的,在这个版本中仅仅会记录文件发生了那些修改。在有了一个新版本之后,这个指针会指向最新的版本。
在这里插入图片描述
③ 通过修改指针的位置可以实现回退到某个版本,表示方式有两种,一种是用^,一种使用~,如下

  • HEAD^ 或者 HEAD~1:表示上一个版本
  • HEAD^^ 或者 HEAD~2:表示上两个版本

通过上面的方式回退到第一个版本之后,指针就指向了版本1
在这里插入图片描述
2.基本使用

  1. 创建一个版本库,新建目录git_test,在git_test目录下创建一个版本库,命令:git init
# mkdir /git_test
# cd /git_test/
# git init
Initialized empty Git repository in /git_test/.git/
# ls -a 
.  ..  .git
可以看到在git_test目录下创建了一个.git隐藏目录,这就是版本库目录。
  1. git_test目录下创建一个文件code.txt,写入一行内容如下
# echo "first line">> code.txt
# cat code.txt 
first line
  1. 使用如下两条命令可以创建一个版本,创建版本需要两步:
# git add code.txt 
# git commit -m 'v1'
[master (root-commit) c410627] v1
 1 file changed, 1 insertion(+)
 create mode 100644 code.txt
  1. 查看版本记录,命令是git log
# git log
commit c4106273b0b87ac6f42042589663900af3617837  >>>序号
Author: root<[email protected]>		 >>>提交者
Date:   Thu Dec 27 19:54:24 2018 +0800           >>>日期

    v1    >>>版本
  1. 继续编辑code.txt,在里面增加一行。
# echo "second line">>code.txt 
# cat code.txt 
first line
second line
  1. 使用如下命令再创建一个版本并查看版本记录
# echo "second line">>code.txt 
# cat code.txt 
first line
second line

# git add code.txt 
# git commit -m 'v2 -newversion'
[master 1a3efe2] v2 -newversion
 1 file changed, 1 insertion(+)

# git log
commit 1a3efe201b6e7fc66aa34f4ae9333a9ce2d54bb6
Author: root<[email protected]>	
Date:   Thu Dec 27 20:02:39 2018 +0800

    v2 -newversion

commit c4106273b0b87ac6f42042589663900af3617837
Author: root<[email protected]>	
Date:   Thu Dec 27 19:54:24 2018 +0800

    v1
  1. 现在如果想要回到某一个版本,可以使用如下命令:git reset --hard HEAD^

其中HEAD表示当前最新版本,HEAD^ 表示当前版本的前一个版本,HEAD^^表示当前版本的前前个版本,也可以使用HEAD~1 表示当前版本的前一个版本,HEAD~100表示当前版本的前100版本。

# git reset --hard HEAD^
HEAD is now at c410627 v1
# git log
commit c4106273b0b87ac6f42042589663900af3617837
Author: root<[email protected]>	
Date:   Thu Dec 27 19:54:24 2018 +0800

    v1

# cat code.txt 
first line
执行命令后使用git log查看版本记录,发现现在只能看到版本1的记录,cat code.txt查看文件内容,
现在只有一行,也就是第一个版本中code.txt的内容。
  1. 假如我们现在又想回到版本2,这个时候该如何操作呢?可以使用命令git reset --hard 版本号从上面第6步的操作结果看看一看到版本2的版本号为1a3efe201b6e7fc66aa34f4ae9333a9ce2d54bb6
# git reset --hard 1a3efe
HEAD is now at 1a3efe2 v2 -newversion
现在发现版本2有回来了。可以cat code.txt查看其里面的内容如下
# cat code.txt 
first line
second line
  1. 假如说上面的终端已经关闭了,看不到上面的版本好了该怎么回退版本呢?

①首先执行命令将版本回退到版本1

# git reset --hard HEAD^
HEAD is now at c410627 v1
# git log
commit c4106273b0b87ac6f42042589663900af3617837
Author: root<[email protected]>
Date:   Thu Dec 27 19:54:24 2018 +0800

    v1

②把当前终端关闭,然后打开新的终端,已经无法看到之前操作留下的版本2的版本号了
这里就要用到了 git reflog 命令来查看我们的操作记录

# git reflog
c410627 HEAD@{0}: reset: moving to HEAD^
1a3efe2 HEAD@{1}: reset: moving to 1a3efe
c410627 HEAD@{2}: reset: moving to HEAD^
1a3efe2 HEAD@{3}: commit: v2 -newversion
c410627 HEAD@{4}: commit (initial): v1

③可以看到版本2的版本号,在使用命令进行回滚

# git reset --hard 1a3efe2
HEAD is now at 1a3efe2 v2 -newversion

猜你喜欢

转载自blog.csdn.net/cx55887/article/details/85304893