深入了解git的checkout命令

检出命令(git checkout)是Git最常用的命令之一,同时也是一个很危险的命令.

因为这条命令会重写工作区.检出命令的用法如下:

用法一: git checkout [-q] [<commit>] [--] <path>...

用法二: git checkout [<branch>]

用法三: git checkout [-m] [[-b|--orphan] <new_branch>] [<start_point>>]

第一种用法的<commit>是可选项,如果省略则相当于从暂存区(index)进行检出.

这和之前的重置命令大不相同:重置的默认值是HEAD,而检出的默认值是暂存区.

因此重置一般用于重置暂存区(除非使用--hard参数,否则不重置工作区)

而检出命令主要是覆盖工作区(如果<commit>不省略,也会替换暂存区中相应的文件).

第一种用法:

先来合个影:

在Git中,"留影"用的命令是叫做tag,更加专业的术语叫做"里程碑"(打tag,或者打标签)

"留影"的命令如下:

$ git tag -m "say bye to previous"  old_practice

只需要知道里程碑也无非是一个引用.通过记录提交ID(或者创建Tag对象)来为当前版本库的状态进行"留影"

$ ls .git/refs/tags/old_practice

留影之后,可以执行git describe命令将最新提交显示为一个容易记忆的名字.

显示的时候会选取离该提交最近的里程碑作为"基础版本号",后面附加标识距离"基础版本"

的数字,以及该提交的SHA1哈希值的缩写.因为最新的提交上恰好被打了一个"里程碑".

所以直接显示"里程碑"的名称.这个技术会在后面的示例代码中经常用到.

删除文件:(这个时候工作区只有一个test1.txt文件是已经commit结束,又增加了新的东西,处于modify状态)

在这个暂存区和工作区都包含文件修改的情况下,使用删除命令更具有挑战性.

删除命令有很多种使用方法,有的方法很巧妙,而有的方法则需要更多的输入.

为了分别介绍不同的删除方法.还要使用之前使用过的保存进度的git stash 命令.

保存进度:

在恢复进度.注意不要使用git stash pop ,而是使用git stash apply,因为这个保存的进度要被多次用到.

本地删除不是真的删除.

$ls是看工作区中有哪些文件.

$rm test1.txt 命令执行之后,工作区中处于修改Modified状态的test1.txt文件被删除了.

但是执行$ git ls-files 之后还是可以看出有文件的.

从文件的状态来看,文件只是在本地进行了删除,尚未添加到暂存区(提交任务)中.

也就是说:直接在工作区删除,对暂存区和版本库没有任何影响.

从Git的状态中可以看出,本地删除如果要反应在暂存区中应该用git rm命令,对不向删除的文件执行

git checkout -- <file>,可以让文件在工作区中重现.

这个时候如果用checkout命令的话,刚才已经"被删除"的test1.txt就会恢复在工作区了.

不过这个文件是没有修改之前的状态.上面的图中我也已经$git status 了.

执行git rm命令删除文件

$ git rm test1.txt
这样删除的动作加入了暂存区,这时执行提交动作,就从真正意义上执行了文件删除.

$ git commit -m "delete files(using:git rm)"

不过不要担心,文件只是在版本库的最新提交中被删除了,在历史提交中尚在.可以通过下面的命令查看历史版本的文件列表.

$ git ls-files --with-tree=HEAD^

也可以查看在历史版本中尚在的删除文件的内容.

$git cat-file -p HEAD^:test1.txt

命令git add -u 快速标记删除

在前面执行git rm命令时,写下了所有要删除的文件名,很长.能不能简化些?

实际上git add就可以.即使用-u参数调用git add命令.含义是将本地有改动(包括修改和删除)的文件标记到暂存区.

为了重现刚才的场景,先使用重置命令抛弃最新的提交,再使用进度回复到之前的状态.

文件的整个过程操作:

上图中$git stash apply -q 恢复保存的进度(参数-q 使得命令进入安静模式)

执行完上面这个命令恢复到了在test1.txt的modified状态.

执行 git add -u 命令可以将(被版本库追踪的)本地文件的变更(修改,删除)全部记录到暂存区中.

转载于:https://www.cnblogs.com/DreamDrive/p/4156493.html

关于Git中的一些常用的命令相关推荐

  1. Git的安装以及常用的命令总结

    Git的安装以及常用的命令总结 一.Git的概述 二.Git的安装 三.Git的使用命令 四.Git的分支操作 五.Git团队的协作机制 (一).Git的概述 Git是一个免费的.完全开源的分布式版本 ...

  2. Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理

    Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 目录 Linux 之 Linux/Ubuntu 中开发操作中常用的命令整理 一.简单介绍 二.常用命令 1. 打开终端 :Ctrl ...

  3. git中查看全部分支的命令

    现在介绍一个超级实用.使用频率极高但几乎所有 Git 教程都不重视的命令 git branch -avv,它用来查看全部分支信息: 上图有三行信息,依次说明: 第一行,开头的星号表示当前所在分支,绿色 ...

  4. MATLAB中 Command Window 常用的命令及功能

    1.常用命令 命令 功能 clc 清除一页的内容,光标回到左上角 clear 清除工作空间所有的变量 clear all 清除所有工作空间所有的变量和函数 clf 清除图形窗口的内容 who 列举出工 ...

  5. mac中一一些常用的命令

    本文转载至 http://blog.csdn.net/chen505358119/article/details/9244701 这里主要讲的是mac中的一些命令,怕忘记了所以记在这里. 1.首先如果 ...

  6. 图解 Git 工作原理和常用命令使用教程

    你知道的越多,不知道的就越多,业余的像一棵小草! 你来,我们一起精进!你不来,我和你的竞争对手一起精进! 编辑:业余草 marklodato.github.io/visual-git-guide/in ...

  7. 收藏!工作中Git使用实践和常用命令流程合集

    来自:匠心Java 工作中git是一项必不可少的技能,在项目的开发进程中起着至关重要的作用 下面介绍一些git在工作中的一些使用实践.常用流程.常用命令,供大家参考! 一:前言 Git的定义是:分布式 ...

  8. Git之(三)Git中常用命令——分支管理

    三.Git中常用命令--分支管理 为什么要使用分支管理? 分支就是科幻电影里面的平行宇宙,也就是当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN. 如果两个平行宇宙互不干 ...

  9. Git 中常用的 4 个命令

    使用 Git 进行版本管理时,肯定不只做提交,有时候也会需要回退修改,并且在回退的基础上进行重新提交,这时候有几个常用的命令就需要用到了,下面分别做介绍. 1.查看提交日志 首先,我们查看当前提交记录 ...

最新文章

  1. win七系统如何卸载MySQL_win7系统卸载SQL2008R2数据库的详细教程
  2. oracle电子商务套件视频,Oracle电子商务套件培训 Oracle EBS R12 制造模块培训视频教程 Oracle管理套件教程...
  3. 回溯算法超详细讲解(附代码)
  4. windows下cmd命令提示符下让程序后台运行命令
  5. pppd 源码修改1
  6. 2020 年,云游戏将爆发?各大科技公司云游戏布局大曝光!
  7. 微信小程序python解析获取用户手机号_python获取微信小程序openid及用户信息
  8. wxpython视频教程下载-闪烁wxpython显示摄像头视频
  9. centos7 安装 JDK环境
  10. Microsoft Dynamics CRM Server 2011安装配置
  11. 如何在 CentOS 中添加、启用和禁用一个仓库
  12. 技术揭秘 | 如何设计 RQData 通讯协议
  13. 如何能把 CAJ 格式文档转换成 PDF 格式?
  14. 大话私服虚拟服务器,大话西游私服服务器
  15. html 锚文本,什么是锚文本,锚文本链接对SEO的影响!
  16. 1000句英语经典口语(10)
  17. 公众号如何用微信红包吸粉而不被封号?实战24天10万粉
  18. 离线强化学习(Offline RL)系列3: (算法篇) IQL(Implicit Q-learning)算法详解与实现
  19. ImageWarping--反距离加权插值(IDW)方法实现及报告
  20. 如何检测计算机主板的好坏,主机电源怎么测试好坏

热门文章

  1. 15.PHP_PHP与Ajax
  2. 虚拟桌面模拟查找点击自绘控件
  3. hdu4847 水题
  4. 【错误记录】Flutter 报错 Downloading the Dart SDK using the BITS service failed, retrying with WebRequest...
  5. 【计算机网络】计算机网络 相关概念 ( 计算机网络概念 | 计算机网络功能 | 组成 | 工作方式 | 功能组成 | 分类 )
  6. 【DBMS 数据库管理系统】数据仓库 数据组织 ( 数据组织级别 | 元数据 | 粒度 | 分割 | 数据组织形式 )
  7. [Spring cloud 一步步实现广告系统] 9. 主类和配置文件
  8. vim 中文乱码解决
  9. 10W学习笔记——查询之联接
  10. 部署harbor1.2.0开启ldap验证