1. 版本回退

在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用 git log 命令查看:

退出git log命令行是: q。

Git提供了一个命令 git reflog 用来记录你的每一次命令:

如果我们要实现回退, Git必须知道当前版本是哪个版本,在Git中,用 HEAD 表示当前版本,也就是最新的提交009befc...711741(注意我的提交ID和你的肯定不一样),上一个版本就是HEAD^ ,上上一个版本就是 HEAD^^ ,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

现在,我们要把当前版本回退到上一个版本,就可以使用 git reset 命令:

我们也可以是使用 commit_id 来在不同版本之间回退

使用 git commit命令将文件添加到本地仓库,要撤销文件修改,可以使用如下命令:

git reset --hard commit_id

2. 版本库(Repository)

工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD

前面讲了我们把文件往Git版本库里添加的时候,是分两步执行的:

第一步是用 git add 把文件添加进去,实际上就是把文件修改添加到暂存区;

第二步是用 git commit 提交更改,实际上就是把暂存区的所有内容提交到当前分支。

2. 撤销修改

1. 在Git中,git checkout -- file 可以丢弃工作区的修改:

命令git checkout -- readme.txt意思就是,把readme.txt文件在工作区的修改全部撤销,这里有两种情况:

一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次 git commit 或 git add 时的状态。

git checkout -- file 命令中的 -- 很重要,没有 --,就变成了“切换到另一个分支”的命令,我们在后面的分支管理中会再次遇到git checkout命令。

2. 如果我们修改了文件,还 git add 到暂存区了,庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交:

Git同样告诉我们,用命令 git reset HEAD file(即撤销git add 命令修改的文件)可以把暂存区的修改撤销掉(unstage),重新放回工作区:

   git reset命令既可以回退版本,也可以把暂存区的修改回退到工作区。当我们用HEAD时,表示最新的版本。再用git status查看一下,现在暂存区是干净的,工作区有修改:然后按照第一步的方法回退。总结如下:

转载于:https://www.cnblogs.com/xuzhudong/p/9052594.html

git 命令行(一)-版本回退相关推荐

  1. Git命令行 回退到指定历史版本

    1.git 命令行查询版本号 查询历次提交记录,得到版本号 git log 比如,要回退到的版本号 为ef582da9e1dbcf34f939fdb0fa2db897ae4887b1 2.git 命令 ...

  2. Git——远程管理版本操作(Tortoise(小乌龟)图形化操作、git命令行操作)

    一.Tortoise 图像化操作: 1.克隆项目(即从github仓库拉取项目文件): 2.暂存区: 添加到暂存区: (1)新建一个文件 (2)右键选择子选项 ->[添加](3)勾选为被控制文件 ...

  3. 【重要】使用Git命令行上传到GitHub上

    [本人GitHub账号:] 用户名:chenhongshuang 密码:shuangshuang6300 邮箱:2452420371@qq.com 进入GitHub账号后 1·新建项目文件名称例dem ...

  4. Git教程之如何版本回退

    一.前言 上一章节,我们已经学会了如何创建版本库,如何提交文件到版本库,如何查看最近提交文件的记录,那么如果现在我们想回退版本怎么操作呢? 二.步骤 ①现在继续对readme.txt文件进行修改,再增 ...

  5. macos安装git命令行_MAC OS git客户端安装及操作

    1. 下载安装mac os 版本的git客户端及相关可视化软件 1.1 从git官网上下载匹配的git客户端.pkg格式的包,然后在系统偏好设置-> 安全性与隐私中打开系统默认禁止安装的这个程序 ...

  6. git命令行完全解读

    BY 张建成(prettyEcho@github) 除非另行注明,页面上所有内容采用知识共享-署名(CC BY 2.5 AU)协议共享 原文地址deep.js , 欢迎 评论 和 star ?? 欢迎 ...

  7. Git命令行介绍和使用说明(持续更新)

    Git命令行介绍和使用说明(持续更新) Git命令行介绍和使用说明(持续更新) 文档名称 Git命令行介绍和使用说明会 创建时间 2012/8/23 修改时间 2012/8/23 创建人 Baifx ...

  8. 如何用git命令行上传本地代码到github

    如何用git命令行上传本地代码到github 2016年09月19日 16:10:36 阅读数:9337 注意:安装的前提条件是配置好git的相关环境或者安装好git.exe,此处不再重点提及 上传的 ...

  9. 关于使用 git 命令行来和“码云”账号上的项目互通过程的基础步骤

    前提:已经有码云账号,电脑已经安装了git工具. (1)在码云账号上登陆自己的账号,创建一个新的项目. (2)在自己的本地磁盘下随便创建一个文件夹(例如起名为:mayun),用来存放从码云上拉下来的项 ...

  10. 如何使用git命令行上传项目到github

    参考文献: 如何使用git命令行上传项目到github 感谢楼主分享!

最新文章

  1. 苏州之行的点滴感悟---活动中老师的言论以及火车上遇到的人
  2. python 跟踪算法
  3. python绘图subplots函数使用模板
  4. 论文笔记:DeepID2
  5. 2019建中台,2020拆中台,为什么很多公司中台战略宣告“失败”?
  6. 不带头结点链表,尾部插入法创建
  7. python中again函数怎么用_《“笨方法”学python 》 once again 20170729
  8. R语言——基础知识呕心沥血大汇总
  9. 关于网页数据导入excel问题
  10. 射频芯片ATE测试从入门到放弃之基本概念
  11. ENVI:如何进行遥感图像的分类?(支持向量机模型)
  12. DLL编写中extern “C”和__stdcall的作用
  13. 分布式数据库中间件对比总结 数据库(分库分表)中间件对比
  14. 自动化本科生考计算机研究生,请教关于自动化专业本科生报考研究生的问题?...
  15. linux限制进程带宽,再Linux系统中限制网络带宽使用的教程
  16. 【NOIP2016普及组】复赛——魔法阵
  17. 实现自定义大转盘抽奖
  18. 你每天应该吃多少水果?
  19. Java实现 LeetCode 373 查找和最小的K对数字
  20. 钱钟书是怎样做读书笔记的

热门文章

  1. 学习中碰到的一些优化工具包和库
  2. THINKPHP中使用swoole
  3. 使用XIB实现嵌套自定义视图
  4. 网站压力测试工具webbench 安装与使用
  5. 掌握 Ajax,第 11 部分: 服务器端的 JSON
  6. MySql 你知道 order by 是怎么回事吗? MySql全字段排序与 rowid 排序
  7. Codewars-Snail(Javascript实现螺旋数组)
  8. LIDAR in Google Earth
  9. 手把手教你制作AppPreview视频并上传到appStore进行审核
  10. 通过Intel XDK编写跨平台app(二)