匿名分支

新建个仓库,并且初始化,创建3个文件,并提交

此时在没有创建新分支的情况下,checkout一下,比如上一个快照

这一段话的意思是,使用了checkout命令,但是没有指定分支名,所以git会创建一个叫做匿名分支(没有名字的分支)的东西,当你切换到别的分支的时候,在这个匿名分支中,所做的所有操作、提交都会被丢弃掉,所以可以使用匿名分支来做一些实验

创建并提交4.txt

切回master分支

说有一个没有连接到任何分支的提交(1920177 4.txt),如果要保留为一个新的分支,那么现在是最好的时机(因为现在有快照ID),使用“git branch <分支名> 1920177”就可以创建分支

匿名分支用于实验一些有风险的提交,从匿名分支切回master分支后,匿名分支就找不到了

checkout命令

checkout命令有两种功能:

1.从历史快照(或者暂存区域)中拷贝文件到工作目录

当给定某个文件时名,git会从指定的提交中拷贝文件到暂存区域工作目录
比如执行git checkout HEAD~ 1.txt:会将上一个快照中的1.txt文件复制到工作目录和暂存区中
如果没有指定具体的快照ID,则将从暂存区域恢复指定文件到工作目录(git checkout 1.txt)
如果你有一个分支名为1.txt,使用git checkout 1.txt的时候,git不知道你是要checkout1.txt文件,还是1.txt分支,所以在不确定是否有分支名和文件名重复的情况下,一般使用git checkout --文件名

2.切换分支

checkout和reset:

reset命令是用来“回到过去”的,根据选项不同,reset命令移动HEAD指针(--soft)->覆盖暂存区(--mixed,默认)->覆盖工作目录(--hard)
checkout命令虽说是用于切换分支,但是它事实上是通过移动HEAD指针和覆盖暂存区、工作目录来实现的

区别:
1.对于reset --hard命令来说,checkout命令更安全,因为checkout命令在切换分之前会先检查一下当前的工作状态,如果不是“clean”的话,git是不允许这样做的,而reset --hard命令则是直接覆盖所有数据
2.更新HEAD指向,reset命令会移动HEAD所在分支的指向,而checkout命令置灰移动HEAD自身来执行另一个分支

Git使用十:匿名分支和checkout命令的更多相关文章

  1. git ---匿名分支和checkout命令

    git checkout -b   //创建一个匿名分支

  2. ###Git 基础图解、分支图解、全面教程、常用命令###

    一.Git 基础图解 转自:http://www.cnblogs.com/yaozhongxiao/p/3811130.html Git 图解剖析 git中文件内容并没有真正存储在索引(.git/in ...

  3. git命令之git tag 给当前分支打标签

    git tag - 标签相关操作 发表于 2011年06月29日 由 机器猫 标签可以针对某一时间点的版本做标记,常用于版本发布. 列出标签 $ git tag # 在控制台打印出当前仓库的所有标签$ ...

  4. git checkout 命令详解

    转自:http://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html?utm_source=tuicool&utm_me ...

  5. git checkout 命令详解(转)

    在日常的git操作中,git checkout——检出,是我们的常用命令.最为常用的两种情形是创建分支和切换分支. 在下面的命令中,使用了一些简写,在这里说明一下: git st # git stat ...

  6. Git -- 分支与合并 (命令行+可视化工具p4merge)

    基本命令 把所有的变化都放在master分支并不是最好的做法. 建议的做法是把变化放在分支里面. 至少应该准备一个feature分支之类的, 把变化都隔离开来, 然后等到所有的功能都稳定之后再合并到m ...

  7. IDEA环境下GIT操作浅析之二-idea下分支操作相关命令

    上次写到<idea下仓库初始化与文件提交涉及到的基本命令>,今天我们继续写IDEA环境下GIT操作之二--idea下分支操作相关命令以及分支创建与合并. 1.idea 下分支操作相关命令 ...

  8. 【Git学习二】深入了解git checkout命令

    检出命令(git checkout)是Git最常用的命令之一,同时也是一个很危险的命令,因为这条命令会重写工作区.检出命令的用法如下: 用法一:git checkout[-q][<commit& ...

  9. git checkout 命令详解【转】

    转自:http://www.cnblogs.com/hutaoer/archive/2013/05/07/git_checkout.html 在日常的git操作中,git checkout——检出,是 ...

随机推荐

  1. vue中使用Base64和md5和rsa

    https://blog.csdn.net/benben513624/article/details/88113459(copy) https://www.cnblogs.com/myfate/p/1 ...

  2. JS自定义表单提交处理方案

    JS自定义数据提交处理方案 问题 在Ajax技术流行的今天,我遇到了一个很头疼的问题,我需要维护一个前人开发的问题单模块功能,并且不停的迭代开发,而这个问题就是问题单字段特别多,而且除了更新问题单外, ...

  3. 两小时入门Docker

    引入 Docker是什么? Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,于 2013 年 3 月以 Apache 2.0 授权协议 ...

  4. Android短信备份及插入笔记

    实现备份短信到xml文件和像短信中插入一条数据 一.实现短信将备份到xml文件中 在布局文件中定义一个按钮,定义点击事件为copyClick MainActivity.java: package co ...

  5. 【Spring】手写Spring MVC

    Spring MVC原理 Spring的MVC框架主要由DispatcherServlet.处理器映射.处理器(控制器).视图解析器.视图组成. 完整的Spring MVC处理 流程如下: Sprin ...

  6. Super Mario HDU - 4417 (主席树)

    Mario is world-famous plumber. His “burly” figure and amazing jumping ability reminded in our memory ...

  7. maven 使用 log4j

    Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等:我们也可 ...

  8. Dubbo2.6.5入门——简单的HelloWorld

    建立父工程 打开idea,新建一个空的maven工程,作为整个项目的父工程. <?xml version="1.0" encoding="UTF-8"?& ...

  9. (二分查找 结构体) leetcode33. Search in Rotated Sorted Array

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  10. grafana-Admin密码重置

    1)查看Grafana配置文件,确定grafana.db的路径 [paths] ;data = /var/lib/grafana [database] # For "sqlite3" ...