git 工作区、版本库

在我们使用git的时候,我们脑海中一定要有一个关于git的框架,如下图:

我们先对git的工作区、暂存区、本地仓库做一个基本的解释

工作区:

就是我们电脑中代码的下载目录

版本库:

在我们的下载目录下有个.git目录,这个目录就是所谓的版本库,暂存区就是.git文件夹下的一个index(或者staged)文件。

我们可以这样理解,当我们下载了一份代码,里面包含了各个文件夹以及各种文件,这些文件都是被git追踪了的,每个文件的追踪信息保存在.git/object(对象库)文件中。

我们使用git修改文件的常规步骤是:

步骤1:修改工作区文件

步骤2:执行git add。

该操作会将步骤1中修改的文件的信息保存下来,形成一个索引(就像是一种映射),保存在版本库中的index(或者stage)文件中。

步骤3:执行git commit

该步骤会将步骤2中保存在index中的修改的文件的信息反映到objects(版本库)中(将index中的映射信息,再次映射到objects(对象库)中)。此时我们的objects(对象库)就保存了我们在工作区中的修改。

步骤4:执行git push

将本地仓库,objects(对象库)中的修改信息推送到远端仓库,并与远端仓库进行比对,进而提出MR。

HEAD是什么

HEAD其实就是一个指向objects(版本库)当前分支的一个游标,所有命令中使用HEAD的地方都可以使用当前分支名替换。

更新代码怎么做

我们更新代码一般有如下两条命令:

命令1:git pull origin/master

拉取远端master分支代码更新本地工作区,注意该命令会直接更新你的工作区,所以此时你的objects(对象库)并不会被更新(这一点一定要注意,因为很多时候我们执行了git pull然后再执行git checkout HEAD xxxx时,工作区的xxxx并没有体现为最新,就是由于对象库没有更新导致的)。

命令2:git fetch

该命令会更新对象库,此时对象库中的文件是最新的,但是工作区不是最新的。

综上我们可以看出,如果想让我们工作区的代码是最新的(这也是我们最为关注的),需要执行git pull命令。执行了git fetch之后,只会更新对象库,想要更新工作区还是要执行一下git pull命令。

几个命令:
  1. #移除不必要的添加到暂存区的文件
  2. git reset HEAD 文件名
  3. #去掉上一次的提交(会直接变成add之前状态)
  4. git reset HEAD^
  5. 该命令与git reset --hard HEAD^相同。
  6. #去掉上一次的提交(变成add之后,commit之前状态)
  7. git reset --soft HEAD^

git 工作区与版本库的更多相关文章

  1. git config配置,工作区和版本库联系。

    关于git和github的介绍,我这边不多说. 使用在windows下使用git,需要配置环境变量,也可以使用git自带的终端工具.,打开git bash laoni@DESKTOP-TPPLHIB ...

  2. Git入门——本地版本库操作

    作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...

  3. git入门 创建版本库, 版本管理 分支 标签

    参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GIT最流行的分布式版本 ...

  4. 学习笔记--Git安装 创建版本库 图文详解

    一.Git下载 在Windows上安装git,一般为msysgit,官网地址:http://git-scm.com/ 我下载的是Git-1.9.2-preview20140411.exe 二.Git安 ...

  5. Git教程--Git安装和版本库的创建

    Git的诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世界热 ...

  6. Git学习之路(2)-安装GIt和创建版本库

    ▓▓▓▓▓▓ 大致介绍 前面一片博客介绍了Git到底是什么东西,如果有不明白的可以移步 Git学习之路(1)-Git简介 ,这篇博客主要讲解在Windows上安装Git和创建一个版本库 ▓▓▓▓▓▓ ...

  7. [git]入门-创建版本库

    转载整理自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256 ...

  8. Git学习--创建版本库

    什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...

  9. 『现学现忘』Git基础 — 8、Git创建本地版本库

    目录 1.Git版本库介绍 2.创建本地版本库 场景一:创建一个空的本地版本库. 场景二:项目中已存在文件时,创建该项目的本地版本库. 场景三:在GitHub网站上创建仓库,克隆到本地. 1.Git版 ...

随机推荐

  1. 利用Python特殊变量__dict__快速实现__repr__的一种方法

    在<第8.15节 Python重写自定义类的__repr__方法>.<Python中repr(变量)和str(变量)的返回值有什么区别和联系>.<第8.13节 Pytho ...

  2. Python的富比较方法__lt__、__gt__之间的关联关系分析

    Python的富比较方法包括__lt__.__gt__分别表示:小于.大于,对应的操作运算符为:"<".">".那么是否象普通数字运算一样,这两个方 ...

  3. PyQt(Python+Qt)学习随笔:复选框状态枚举类Qt.CheckState取值及含义

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 老猿Python,跟老猿学Python! 老猿Python博文目录 专栏:使用PyQt开发图形界面P ...

  4. 深入理解python

    1 python自身的威力 1.1 使用type.str.dir.其他内置函数 //type函数:返回任意对象的数据类型.比如:整型.字符串.列表.字典.元组.函数.类.模块,甚至类型对象都可以作为参 ...

  5. Docker 本地镜像推送到阿里云(五)

    最近在学习Docker,从安装Docker开始,到自定义制作镜像mycentos,但是怎么把它推送到阿里云,一直是困扰我的问题.后面有时间了解了一下,根据本地镜像推动到阿里云其实并没有我们想象中那么难 ...

  6. Redis整合MySQL和MyCAT分库组件(来源是我的新书)

    MyCAT是一个开源的分布式数据库组件,在项目里,一般用这个组件实现针对数据库的分库分表功能,从而提升对数据表,尤其是大数据库表的访问性能.而且在实际项目里,MyCAT分库分表组件一般会和MySQL以 ...

  7. Llbp2p是什么?

    这是个很好的问题.用一句话来概况就是libp2p是一个模块化的协议系统,它的规范和程序库可以用来开发p2p网络应用程序. 对等节点基础 对于我们对libp2p在上面的概要描述有很多内容需要进一步解释, ...

  8. kubeadm 的工作原理

    kubeadm 的工作原理 作者:张首富 时间:2020-06-04 w x:y18163201 相信使用二进制部署过 k8s 集群的同学们都知道,二进制部署集群太困难了,有点基础的人部署起来还有成功 ...

  9. selenium模拟淘宝登陆,过所有验证

    淘宝模拟登陆实现 由于淘宝使用了滑动验证码,需要进行模糊手动滑动,因此考虑使用selenium+chromedriver进行模拟登陆. 淘宝的登陆网址:https://login.taobao.com ...

  10. STL——容器(Set & multiset)的默认构造 & 带参构造 & 对象的拷贝构造与赋值

    1. 默认构造 set<int> setInt;              //一个存放int的set容器. set<float> setFloat;          //一 ...