Git版本切换

【新版本】
  我们创建一个新的文件夹git-version,在文件夹下初始化一个git仓库git inittouch 1.txt

// 第一个版本,内容为空
git add 1.txt
git commit 'add 1.txt'
// 第二个版本
vim 1.txt  // 添加1
git add 1.txt
git commit 'alter to 1'
// 第三个版本
vim 1.txt  // 修改1为2
git add 1.txt
git commit 'alter to 2'

【查看版本】
  开发中,我们往往会对文件进行多次的修改、然后提交,每一次提交都会产生一个新的版本,如:

版本1: ''
版本2: '1'
版本3: '2'

  在实际工作中,我们处理的文件比较复杂,并不能记得每次都改了什么内容,在Git中,我们用git log命令查看提交历史,git log命令显示从最近到最远的提交日志。

git log有许多选项,下表列出了一些常用的选项及其释义:

选项         说明
-p            按补丁格式显示每个更新之间的差异
--word-diff       按 word diff 格式显示差异
--stat          显示每次更新的文件修改统计信息
--shortstat       只显示 --stat 中最后的行数修改添加移除统计
--name-only       仅在提交信息后显示已修改的文件清单
--name-status     显示新增、修改、删除的文件清单
--abbrev-commit   仅显示 SHA-1 的前几个字符,而非所有的 40 个字符
--relative-date   使用较短的相对时间显示(比如,“2 weeks ago”)
--graph        显示 ASCII 图形表示的分支合并历史
--pretty        使用其他格式显示历史提交信息可用的选项包括oneline,short,full,fuller 和format(后跟指定格式)
--oneline        `--pretty=oneline --abbrev-commit` 的简化用法

常用-p选项展开显示每次提交的内容差异。可以看到,最近一次更新和上一次更新的区别是将1修改为2。上一次和上上一次更新的区别是从空内容变成内容为1。

 

【版本切换】
  现在,我们准备把1.txt回退到上一个版本,也就是内容为'1'的那个版本。
  首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,也就是最新提交的版本,上一个版本就是HEAD^, 上上一个版本就是HEAD^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。、
  现在,我们要把当前版本“alter to 2”回退到上一个版本“alter to 1”,就可以使用git reset命令,git reset --hard HEAD^,将文件返回到上一个版本,用cat 1.txt,内容为1,说明版本回退成功。
  我们用git log再看看现在版本库的状态,发现最新的那个版本“alter to 2”已经看不到了。


  如果想返回到最新的版本,可以使用命令git reset --hard commit_id来实现。
  但是,如果找到最新版本的1.txt的commit id呢?Git提供了一个命令git reflog,该命令按照之前经过的所有的commit路径按序来排列,用来记录你的每一次命令。

 

下面使用git reset命令,将文件恢复到最新版本。

 git reset --hard 7ee5c95

现在cat 1.txt,内容是2,成功将版本回退到最新版本。

总结

  Git允许我们使用命令git reset --hard commit_id在版本的历史之间切换。
  HEAD可以用来替换commit_id,HEAD指向的版本是当前版本,上一个版本就是HEAD^ ,上上一个版本就是HEAD^^ ,往上100个版本写成HEAD~100。
  当然了,^和~这两个特殊符号,除了用在HEAD上外,还可以用在<branchName>上或Commit ID上。如master^,代表master的上一个版本;1f2f476~1代表Commit ID为1f2f476的上一个版本。
  可以用git log可以查看提交历史,或者用git reflog查看命令历史,以便确定要切换的版本的版本号。


作者:小小的开发人员
链接:https://www.jianshu.com/p/cf3102d44ad3
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值