【持续更新】Git使用指南
1. 理解Git的不同视角

文件状态图
从状态视角理解git: 一个文件有4种状态, 状态转换如图所示
从存储视角理解git:

- 工作区:电脑里能看到的目录
- 暂存区(stage/index):一般存放在.git目录下的index文件中,保存所有staged files.
- 版本库:.git目录就是版本库, 包含了git系统的所有信息, 当然也包含暂存区. 比较重要的信息包括每个版本的目录树(可以理解为工作区的一个版本)
首先理解清楚版本的概念:

图中的一个结点就是一个版本的目录树, HEAD是一个游标,指向一个版本(与版本库交互是通过HEAD指针). 不同分支如上图所示, 不过是版本链的分支.
object是实质存储文件内容的地方, 暂存区、版本等只是存储object中某位置的索引. 但为了直观理解, 我们不妨简单理解文件就存储在暂存区、版本中
接下来从存储视角理解几个git指令的作用:
初始时暂存区与工作区一致.
git add <file>:将工作区的
file更新至暂存区git commit:将暂存区的所有文件形成一个新的版本, 加入版本链并使当前分支的HEAD指向该版本
git reset:将HEAD指向的版本更新到暂存区,工作区不受影响。若添加--hard选项则同时更新工作区
git rm <file>:将暂存区和工作区的
file删除. 如果加上--cached选项则只删除暂存区git checkout <HEAD>: 用HEAD指向的版本替代工作区和暂存区(此时原来工作区中未add的改动和暂存区中未commit的改动).
- git checkout -- <file>:用暂存区中的file替代工作区
- git checkout -b|-B <new_branch>:创建一个新分支(新分支的HEAD指向原来分支HEAD指向的版本, 即上图的交点处)并切换过去(-B使得不存在就新建一个, 已存在就覆盖)
- git checkout [--detach] <commit>:先把head指向commit, 然后按上述checkout HEAD进行更新. (HEAD之后的版本将被丢弃)
【持续更新】Git使用指南的更多相关文章
- Android Project from Existing Code 生成 R 文件错误、失败等问题解决办法 - 持续更新
Android Project from Existing Code 生成 R 文件错误.失败等问题解决办法 - 持续更新 git 上的项目,pull下来之后用Android Project fro ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【github&&git】4、git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- 【笔记】git 的常用操作命令(持续更新。。。)
项目正在如火如荼的开展,代码量的繁多不得不令我们运用 git 这个有用的工具去管理我们共同协作的代码 git 在这里不作什么介绍了,百度一大堆的教程 首推廖雪峰老师的:http://www.liaox ...
- 开发常用Git/Linux/idea命令快捷键总结(持续更新)
在开发过程中,会使用越来越多的命令,或快捷键,来帮助我们提高工作效率.本文记录了我在平时积累的常用命令,分享给大家. git命令 基本命令 set LESSCHARSET=utf-8 --idea T ...
- git使用技巧集合(持续更新中)
git使用技巧集合(持续更新中) 在团队协作中,git.svn等工具是非常重要的,在此只记录一些git使用过程中遇到的问题以及解决方法,并且会持续更新. 1.git commit之后,还没push,如 ...
- 常见 git 需求整理(持续更新中)
首发于 语雀文档 突然感觉自己对 git 还是挺熟悉的,因为团队里新来的七八号应届生来问我 git 问题,基本没有答不上的情况,但为了能更好地对知识进行整理,还是记录一下为好. (希望能)持续更新.. ...
- git使用之错误分析及解决(持续更新)
错误一: 使用 $ git push -u origin master 出现如下错误: error: src refspec master does not match any. error: fai ...
- git的简单使用(一些小操作,持续更新)
第一次使用git的过程记录 参考了两个文章 菜鸟教程-git简明指南 阮一峰-常用git命令清单 git的几个工作区(此处参考了上面的两篇介绍) 简单步骤如下 git init 在当前目录建立工作区 ...
- BAT 前端开发面经 —— 吐血总结 前端相关片段整理——持续更新 前端基础精简总结 Web Storage You don't know js
BAT 前端开发面经 —— 吐血总结 目录 1. Tencent 2. 阿里 3. 百度 更好阅读,请移步这里 聊之前 最近暑期实习招聘已经开始,个人目前参加了阿里的内推及腾讯和百度的实习生招聘, ...
随机推荐
- Atcoder ARC-065
ARC065(2020.8.3) A 尛你 \(\%\%\%\) B 翻译是错的,自闭了好久.先并查集将地铁连接的连通块联通,再枚举每条道路边判断是否在同一连通块即可. C 这翻译不知道在讲什么,建议 ...
- HTML 5的革新——语义化标签
感谢原文作者:html5jscss 原文链接:http://www.html5jscss.com/html5-semantics-section.html 大佬的下一篇博文:http://www.ht ...
- VC中如何将资源打包并释放到指定文件夹
转载请注明来源:https://www.cnblogs.com/hookjc/ 很多时候,我们可能要将某些文件打包到资源中,然后当程序执行的时候,发现缺少某些文件时,进行自我修复,以维持程序的正常执行 ...
- html路径
一.HTML 相对路径和绝对路径区别分析 HTML初学者会经常遇到这样一个问题,如何正确引用一个文件.比如,怎样在一个HTML网页中引用另外一个HTML网页作为超链接(hyperlink)?怎样在一个 ...
- FidBugs的使用学习
是什么? 静态代码分析器,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题.Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness, ...
- python进阶(24)Python字典的底层原理以及字典效率
前言 问题1:python中的字典到底是有序还是无序 问题2:python中字典的效率如何 python字典底层原理 在Python 3.5以前,字典是不能保证顺序的,键值对A先插入字典,键值对B ...
- F WebDriver and 环境配置
https://seleniumhq.github.io/docs/wd.html WEBDRIVER The biggest change in Selenium recently has been ...
- .NET 云原生架构师训练营(权限系统 代码实现 EntityAccess)--学习笔记
目录 开发任务 代码实现 开发任务 DotNetNB.Security.Core:定义 core,models,Istore:实现 default memory store DotNetNB.Secu ...
- 13、Linux基础--grep、sed、awk三剑客综合运用
考试 1.找出/proc/meminfo文件中以s开头的行,至少用三种方式忽略大小写 [root@localhost ~]# grep -E '^[sS]' /proc/meminfo [root@l ...
- 北京太速科技-6U VPX 6槽 Full Mesh结构背板机箱
一.产品概述 Ori6UVPX6SlotFullMesh264背板机箱 为 6U VPX 6槽 Full Mesh结构,用于实现PCIE.RapidIO IO 4X Full Mesh 高速数据互联, ...