git--版本创建、回滚的原理及演练
声明:文章原稿来源于恩师稀哥。
1. 工作原理
我们来简单说明一下git的工作原理
① 在版本库中创建文件的时候,就有了文件的第一个版本,于此同时会生成一个指针指向这个版本
② 当修改了code.txt中的内容以后,就生成了第二个版本,但是这个版本是依赖上一个版本的,在这个版本中仅仅会记录文件发生了那些修改。在有了一个新版本之后,这个指针会指向最新的版本。
③ 通过修改指针的位置可以实现回退到某个版本,表示方式有两种,一种是用^,一种使用~,如下
- HEAD^ 或者 HEAD~1:表示上一个版本
- HEAD^^ 或者 HEAD~2:表示上两个版本
通过上面的方式回退到第一个版本之后,指针就指向了版本1
2.基本使用
- 创建一个版本库,新建目录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隐藏目录,这就是版本库目录。
- 在
git_test
目录下创建一个文件code.txt
,写入一行内容如下
# echo "first line">> code.txt
# cat code.txt
first line
- 使用如下两条命令可以创建一个版本,创建版本需要两步:
# git add code.txt
# git commit -m 'v1'
[master (root-commit) c410627] v11 file changed, 1 insertion(+)create mode 100644 code.txt
- 查看版本记录,命令是
git log
# git log
commit c4106273b0b87ac6f42042589663900af3617837 >>>序号
Author: root<root@localhost.localdomain> >>>提交者
Date: Thu Dec 27 19:54:24 2018 +0800 >>>日期v1 >>>版本
- 继续编辑code.txt,在里面增加一行。
# echo "second line">>code.txt
# cat code.txt
first line
second line
- 使用如下命令再创建一个版本并查看版本记录
# echo "second line">>code.txt
# cat code.txt
first line
second line# git add code.txt
# git commit -m 'v2 -newversion'
[master 1a3efe2] v2 -newversion1 file changed, 1 insertion(+)# git log
commit 1a3efe201b6e7fc66aa34f4ae9333a9ce2d54bb6
Author: root<root@localhost.localdomain>
Date: Thu Dec 27 20:02:39 2018 +0800v2 -newversioncommit c4106273b0b87ac6f42042589663900af3617837
Author: root<root@localhost.localdomain>
Date: Thu Dec 27 19:54:24 2018 +0800v1
- 现在如果想要回到某一个版本,可以使用如下命令:
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<root@localhost.localdomain>
Date: Thu Dec 27 19:54:24 2018 +0800v1# cat code.txt
first line
执行命令后使用git log查看版本记录,发现现在只能看到版本1的记录,cat code.txt查看文件内容,
现在只有一行,也就是第一个版本中code.txt的内容。
- 假如我们现在又想回到版本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
# git reset --hard HEAD^
HEAD is now at c410627 v1
# git log
commit c4106273b0b87ac6f42042589663900af3617837
Author: root<root@localhost.localdomain>
Date: Thu Dec 27 19:54:24 2018 +0800v1
②把当前终端关闭,然后打开新的终端,已经无法看到之前操作留下的版本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
git--版本创建、回滚的原理及演练相关推荐
- GitHub入门:github查看项目的历史版本,并实现版本的回滚(网页版)
原创博文,欢迎转载,转载时请务必附上博文链接,感谢您的尊重. 前言 通过本篇,你将学会在GitHub官网上,查询自己项目的[历史提交记录],还有[版本的回滚]操作. 代码实现 GitHub 版本管理和 ...
- git远程代码回滚_【GIT】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚...
git branch -D br [git 删除远程分支] git push origin :br (origin 后面有空格) git代码库回滚: 指的是将代码库某分支退回到以前的某个commit ...
- Git push之后回滚
Git在push之后该怎么回滚呢?分为下面两个步骤 1.本地回退 回退到上次提交: git reset --hard HEAD^ 2.远程回退 然后强制推送当前这个版本到云端 git push ori ...
- 咸鱼笔记—git版本创建与回退
咸鱼笔记-git版本创建与回退 git版本创建与回退 使用 工作区和暂存区 工作区(Working Directory) 版本库(Repository) 管理修改 撤销修改 对比文件的不同 删除文件 ...
- 解决SVN提交代码撤回---恢复上个版本(回滚)
在提交代码难免回出现一些问题 想想把提交更新代码从svn上撤回来 1在提交代码的目录上打开 日志 2找到自己提交的代码版本 右击(回滚) 截图 截不到拍了张照凑合着看吧 这样就能 把提交的代码 回滚回 ...
- 【Git】Git 基础命令 ( 查看提交记录 git log | 版本回滚 git reset | 撤销回滚 git reflog )
文章目录 一.查看提交记录 git log 1.查看详细提交记录 2.查看简略提交记录 二.版本回滚 git reset 1.Git 中的版本表示 HEAD~1 2.版本库代码回滚 三.撤销回滚 1. ...
- git 回退到上个版本 rollback 回滚 git reset HEAD, git 回退到上一版本
git回退到上个版本 git reset --hard HEAD^ 回退到前3次提交之前,以此类推,回退到n次提交之前 git reset --hard HEAD~3 查看commit的sha码 gi ...
- Git 撤销操作 / 回滚历史
撤销操作 git checkout -- <filename>,放弃文件的当前更改,回到最近一次的提交状态 git reset HEAD <filename>,取消暂存文件 g ...
- git 远程仓库回滚
2019独角兽企业重金招聘Python工程师标准>>> git branch backup #创建备份分支 git push origin backup:backup #push到远 ...
最新文章
- nginx win 启动关闭_windows下Nginx启动、关闭、重启bat工具
- Web开发模式(MVC设计模式)
- Android之library class android.webkit.WebViewClient depends on program class android.net.http.SslErro
- 森近林之助【字符串处理】
- web前端-回调函数sort详解
- Python3 爬虫学习笔记 C15【代理的基本使用】
- 微信支付开发(全网资源) - 统计篇
- STC - STC15官方库函数 - 串口操作修改
- 苹果gamecenter未能连接服务器,win7系统GameCenter无法连接服务器的解决方法
- 减库存怎么处理 java_java减库存
- OpenHarmony社区开源代码下载及编译
- 末日启示:向死而生--《罗辑思维》第一季第一期
- 机器学习和深度学习资料
- myeclipse building workspace如何禁止及提高myeclipse速度
- java实验报告答案_Java实验报告--继承与接口
- Nginx的简单理解
- 华为机试python3题解(17题 持续更新ing)
- 穆迪分析在Chartis报告中被评为CLO解决方案类别领导者
- 光猫注册灯一直闪/光猫恢复出厂设置后没网/路由器没网【修复记录】
- Unity3D官方资源完全下载