本文主要是介绍【Git】工作区 暂存区 版本库,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
上篇博客总结了一下git的常用命令,而在命令的操作背后,其实影响的是不同的工作区域。git的工作区域分为三个部分,分别为:工作区,暂存区和版本库。
一. 基本概念
- 工作区(working directory):将一个文件夹通过git init设置成一个git可以管理的文件夹时,这个文件夹里的内容就是工作区;
- 版本库(repository):当工作区生成后,可发现.git,这个就是版本库;
- 暂存区(stage / index):用来暂时存放工作区中修改的内容。
二. 工作图概览
- 什么是Object:Object是git对象库,是用来存储各种创建的对象以及内容;
- 什么是Master:Master即为主分支,当我们git init后,并不会立刻产生分支,而是在我们添加文件,git add , git commit 之后,才会看到master分支。
- 什么是HEAD:HEAD是一个引用,引用的是当前的分支。如果当前处于master分支,那么HEAD就会指向master,如果切换到dev或其它分支,则是指向切换到的分支。
三. 常用操作命令对不同区的影响
- git add :将对应更改的文件添加到暂存区,暂存区中的目录树会更新;
- git commit :将暂存区做出的修改提交到版本库中,这是master指向的分支被更新;
- git reset HEAD:暂存区的内容会被版本库的内容覆盖;
- git checkout –file:将工作区指定修改的文件被暂存区的内容覆盖(消除所有工作区进行的改动);
- git rm –cached:直接从暂存区将文件进行删除,不会影响工作区的内容;
- git checkout HEAD –file:将版本库中的对应的文件内容直接替换工作区和暂存区中的该文件。
四. 查看三个分区的区别
- git diff :查看工作区和暂存区的区别
- git diff –cached:查看暂存区和版本库之间的区别;
- git diff HEAD:查看工作区和版本库之间的区别;
五. 为什么需要暂存区
假设一个场景,当自己开发需求到一半,没有commit到版本库时,突然需要先紧急处理下线上的bug,但一时还不能完成手里的开发任务,这时,也不能commit提交给版本库,避免对其它人的影响。所以,如果没有一个暂存区,我们修改的文件只可以立刻保存到版本库中。
上述场景,我们利用git的暂存区,问题就可以很容易地处理,使用步骤如下:
- git stash :将自己工作区地修改内容隐藏
- 新建一个bug分支,处理bug
- 处理完成后,使用git stash pop将修改地内容重新移入到工作区
- 继续开发工作
这篇关于【Git】工作区 暂存区 版本库的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!