【Git】工作区 暂存区 版本库

2024-08-25 18:38
文章标签 工作 版本 git 暂存区

本文主要是介绍【Git】工作区 暂存区 版本库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上篇博客总结了一下git的常用命令,而在命令的操作背后,其实影响的是不同的工作区域。git的工作区域分为三个部分,分别为:工作区,暂存区和版本库。

一. 基本概念

  1. 工作区(working directory):将一个文件夹通过git init设置成一个git可以管理的文件夹时,这个文件夹里的内容就是工作区;
  2. 版本库(repository):当工作区生成后,可发现.git,这个就是版本库;
  3. 暂存区(stage / index):用来暂时存放工作区中修改的内容。

二. 工作图概览
这里写图片描述

  1. 什么是Object:Object是git对象库,是用来存储各种创建的对象以及内容;
  2. 什么是Master:Master即为主分支,当我们git init后,并不会立刻产生分支,而是在我们添加文件,git add , git commit 之后,才会看到master分支。
  3. 什么是HEAD:HEAD是一个引用,引用的是当前的分支。如果当前处于master分支,那么HEAD就会指向master,如果切换到dev或其它分支,则是指向切换到的分支。

三. 常用操作命令对不同区的影响

  1. git add :将对应更改的文件添加到暂存区,暂存区中的目录树会更新;
  2. git commit :将暂存区做出的修改提交到版本库中,这是master指向的分支被更新;
  3. git reset HEAD:暂存区的内容会被版本库的内容覆盖;
  4. git checkout –file:将工作区指定修改的文件被暂存区的内容覆盖(消除所有工作区进行的改动);
  5. git rm –cached:直接从暂存区将文件进行删除,不会影响工作区的内容;
  6. git checkout HEAD –file:将版本库中的对应的文件内容直接替换工作区和暂存区中的该文件。

四. 查看三个分区的区别

  1. git diff :查看工作区和暂存区的区别
  2. git diff –cached:查看暂存区和版本库之间的区别;
  3. git diff HEAD:查看工作区和版本库之间的区别;

五. 为什么需要暂存区

假设一个场景,当自己开发需求到一半,没有commit到版本库时,突然需要先紧急处理下线上的bug,但一时还不能完成手里的开发任务,这时,也不能commit提交给版本库,避免对其它人的影响。所以,如果没有一个暂存区,我们修改的文件只可以立刻保存到版本库中。

上述场景,我们利用git的暂存区,问题就可以很容易地处理,使用步骤如下:

  1. git stash :将自己工作区地修改内容隐藏
  2. 新建一个bug分支,处理bug
  3. 处理完成后,使用git stash pop将修改地内容重新移入到工作区
  4. 继续开发工作

这篇关于【Git】工作区 暂存区 版本库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1106342

相关文章

IDEA和GIT关于文件中LF和CRLF问题及解决

《IDEA和GIT关于文件中LF和CRLF问题及解决》文章总结:因IDEA默认使用CRLF换行符导致Shell脚本在Linux运行报错,需在编辑器和Git中统一为LF,通过调整Git的core.aut... 目录问题描述问题思考解决过程总结问题描述项目软件安装shell脚本上git仓库管理,但拉取后,上l

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

C#利用Free Spire.XLS for .NET复制Excel工作表

《C#利用FreeSpire.XLSfor.NET复制Excel工作表》在日常的.NET开发中,我们经常需要操作Excel文件,本文将详细介绍C#如何使用FreeSpire.XLSfor.NET... 目录1. 环境准备2. 核心功能3. android示例代码3.1 在同一工作簿内复制工作表3.2 在不同

Git进行版本控制的实战指南

《Git进行版本控制的实战指南》Git是一种分布式版本控制系统,广泛应用于软件开发中,它可以记录和管理项目的历史修改,并支持多人协作开发,通过Git,开发者可以轻松地跟踪代码变更、合并分支、回退版本等... 目录一、Git核心概念解析二、环境搭建与配置1. 安装Git(Windows示例)2. 基础配置(必

Git打标签从本地创建到远端推送的详细流程

《Git打标签从本地创建到远端推送的详细流程》在软件开发中,Git标签(Tag)是为发布版本、标记里程碑量身定制的“快照锚点”,它能永久记录项目历史中的关键节点,然而,仅创建本地标签往往不够,如何将其... 目录一、标签的两种“形态”二、本地创建与查看1. 打附注标http://www.chinasem.cn

Python一次性将指定版本所有包上传PyPI镜像解决方案

《Python一次性将指定版本所有包上传PyPI镜像解决方案》本文主要介绍了一个安全、完整、可离线部署的解决方案,用于一次性准备指定Python版本的所有包,然后导出到内网环境,感兴趣的小伙伴可以跟随... 目录为什么需要这个方案完整解决方案1. 项目目录结构2. 创建智能下载脚本3. 创建包清单生成脚本4

深入浅出Spring中的@Autowired自动注入的工作原理及实践应用

《深入浅出Spring中的@Autowired自动注入的工作原理及实践应用》在Spring框架的学习旅程中,@Autowired无疑是一个高频出现却又让初学者头疼的注解,它看似简单,却蕴含着Sprin... 目录深入浅出Spring中的@Autowired:自动注入的奥秘什么是依赖注入?@Autowired

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

Python中的filter() 函数的工作原理及应用技巧

《Python中的filter()函数的工作原理及应用技巧》Python的filter()函数用于筛选序列元素,返回迭代器,适合函数式编程,相比列表推导式,内存更优,尤其适用于大数据集,结合lamb... 目录前言一、基本概念基本语法二、使用方式1. 使用 lambda 函数2. 使用普通函数3. 使用 N

更改linux系统的默认Python版本方式

《更改linux系统的默认Python版本方式》通过删除原Python软链接并创建指向python3.6的新链接,可切换系统默认Python版本,需注意版本冲突、环境混乱及维护问题,建议使用pyenv... 目录更改系统的默认python版本软链接软链接的特点创建软链接的命令使用场景注意事项总结更改系统的默