git 工作区与版本库
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命令。
几个命令:
#移除不必要的添加到暂存区的文件
git reset HEAD 文件名
#去掉上一次的提交(会直接变成add之前状态)
git reset HEAD^
该命令与git reset --hard HEAD^相同。
#去掉上一次的提交(变成add之后,commit之前状态)
git reset --soft HEAD^
git 工作区与版本库的更多相关文章
- git config配置,工作区和版本库联系。
关于git和github的介绍,我这边不多说. 使用在windows下使用git,需要配置环境变量,也可以使用git自带的终端工具.,打开git bash laoni@DESKTOP-TPPLHIB ...
- Git入门——本地版本库操作
作为一个一直用SVN的家伙,深深地感到了自己在版本控制工具上的落伍.... 首先必须强调的是: Git与Github不是一回事. Git是目前世界上最先进的分布式版本控制系统,于2005年被linux ...
- git入门 创建版本库, 版本管理 分支 标签
参考: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 GIT最流行的分布式版本 ...
- 学习笔记--Git安装 创建版本库 图文详解
一.Git下载 在Windows上安装git,一般为msysgit,官网地址:http://git-scm.com/ 我下载的是Git-1.9.2-preview20140411.exe 二.Git安 ...
- Git教程--Git安装和版本库的创建
Git的诞生 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了. Linus虽然创建了Linux,但Linux的壮大是靠全世界热 ...
- Git学习之路(2)-安装GIt和创建版本库
▓▓▓▓▓▓ 大致介绍 前面一片博客介绍了Git到底是什么东西,如果有不明白的可以移步 Git学习之路(1)-Git简介 ,这篇博客主要讲解在Windows上安装Git和创建一个版本库 ▓▓▓▓▓▓ ...
- [git]入门-创建版本库
转载整理自:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/0013743256 ...
- Git学习--创建版本库
什么是版本库呢?版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或 ...
- 『现学现忘』Git基础 — 8、Git创建本地版本库
目录 1.Git版本库介绍 2.创建本地版本库 场景一:创建一个空的本地版本库. 场景二:项目中已存在文件时,创建该项目的本地版本库. 场景三:在GitHub网站上创建仓库,克隆到本地. 1.Git版 ...
随机推荐
- 使用cmd制作图片木马
我们可以使用windows下自带的cmd制作图片木马,配合文件包含漏洞可以达到getshell的目的 我们找到一张图片:kiss.jpg 如图: 写好一句话木马:chopper.php 将两者放在同一 ...
- 在Centos7下docker配置自动化环境镜像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)
最近在学习Docker,准备做自动化测试代码集成的功能.如下文章的前提是已经安装好linux系统,且成功安装好Docker. 接下来我会按步骤一步一步的对自动化需要的一些环境进行安装,如果没有特别说明 ...
- Day7 【Scrum 冲刺博客】
每日会议总结 昨天已完成的工作 方晓莹(PIPIYIng) 对接车位管理接口 处理对接接口遇到的bug和错误 方子茵(Laa-L) 暂无 黄芯悦(Sheaxx) 完成住户车位查询页面 完成住户物业报修 ...
- es6 数组新增方法
1.Array.from(): 这个函数的作用是将类似数组的对象转化为数组,比如DOM对象 let arrayLike = { "0":"TangSir&quo ...
- Codeforces Round #682 Div2 简要题解
Contest link A.Specific Tastes of Andre Problem link 题意 构造一个长度为 \(n\) 的序列,使得每个非空子序列的和都被其长度整除. 思路 直接每 ...
- 【题解】「P6832」[Cnoi2020]子弦
[题解]「P6832」[Cnoi2020]子弦第一次写月赛题解( 首先第一眼看到这题,怎么感觉要用 \(\texttt{SAM}\) 什么高科技的?结果一仔细读题,简单模拟即可. 我们不难想出,出现最 ...
- NOI2008 志愿者招聘
文化课 + 竞赛双废物又来水题解了. 首先,对于题干中的人,很像网络流中的流量,但是他有一个每天人数的下限,我从网上借鉴(chaoxi)到了两种思路: 把下界限制转化为一条边的流量下界,这样就是最小费 ...
- Java8新增的这些集合骚操作,你掌握了嘛?
目录 Iterable的forEach Iterator的forEachRemaining Collection的removeIf Stream操作 List的replaceAll List的sort ...
- rman删除归档日志无法释放
背景 当Oracle 归档日志满了后,将无法正常登入oracle,需要删除一部分归档日志才能正常登入ORACLE.最近遇到一个问题,一套Oracle 11g数据库使用RMAN删除了归档日志,但是仍然无 ...
- Mac电脑完美解决 BasicIPv6ValidationError 问题,通过命令行更改ip设置
在更改mac电脑ip网络时,提示BasicIPv6ValidationError.