Git安装完成之后,在不使用中央库的状况下,本地机器就可以用来进行代码控管。使用`git init`命令就对将当前目录进行控管了。这个命令会在该目录下产生一个.git 的隐藏文件夹。
Git中的常见的概念和术语有:
* Working Directory:工作目录、工作区
* Stage: 暂存区,缓存区
* Repository:库, 版本库
## 工作区
工作区就是本地工作的目录, 就是使用使用git init初始化控管的目录,但是不包括 .git的隐藏目录。
## 版本库
版本库就是 .git 的隐藏目录,.git 的隐藏目录是Git用来进行版本控管的目录, 相关的一些版本记录以及改动都在这个目录中。在使用中,这个目录的大小往往比控管源码本身要大。
## 暂存区
暂存区也叫做缓存区。 英文常见叫做Stage , 也有称作Index的。
这是Git和SVN,Perforce等其他版本控管工具的一个比较大的不同之处。
看一张图:
![](https://box.kancloud.cn/70b7902ffd7556eea33d145f429ae0ac_458x234.png)
版本库包括两个部分:缓存区和代码库
* 工作区中的文件可以添加到缓存区(git add)
* 暂存区的文件可以提交到本地库(git commit),每次提交会产生一个唯一的版本号。
* 暂存区的文件也可以撤回到工作区。(git reset HEAD – filename )
## 工作流程
1. 初始之后,工作区、暂存区和本地库的内容是相同的
2. 工作区改动后,就与暂存区和本地库不一致了,Git知道这些文件被改过,将文件设置为modified(Unstaged files)
3. 执行git add后,会将这些文件加入缓存区。但是与本地库还是不一样
4. 执行git commit后,将暂存区内容提交到本地库。提交后三者又保持了一致。
## 备注
* State的暂存区和git stash的暂存的位置是不一样的
https://img-blog.csdnimg.cn/img_convert/287e457d265cfd202e57179c2d8f2845.png
- 前言
- 第1章 概念篇
- 1.1 版本控管的概念与历史
- 1.2 Git概述
- 1.3 Git 安装
- 1.4 工作区、暂存区和版本库
- 1.5 本地库与中央库
- 1.6 Git术语汇总
- 1.7 GitHub
- 1.8 裸仓库
- 第2章 基于本地库的操作
- 2.1 初始化库
- 2.2 提交代码
- 2.3 日志查看
- 2.4 差异比较
- 2.5 提交撤销
- 2.6 删除文件
- 第3篇 中央库命令及操作
- 3.1 中央库搭建
- 3.1.1 SSH协议中央库搭建
- 3.1.2 SSH协议中央库搭建问题解决
- 3.2 推送远端库
- 3.3 冲突处理
- 第4章 进阶篇
- 4.1 分支与合并
- git整合分支的两种方式 merge 和 rebase
- 最简单的git merge 和git rebase 区别介绍和示例演示
- git merge 合并
- git rebase 变基
- 取消merge
- 4.2 标签
- 4.3 忽略不需要控管的文件
- 4.4 Git工作流程
- 4.5 HEAD 究竟是什么?
- 4.6 .git实现原理解密
- 4.7 代码拉取与提交
- 4.8 查看提交记录
- 查看前一个月提交记录
- 4.9 git reset 和 git revert的区别和适用场景
- 第5章 命令与工具篇
- 5.1 Git常用命令一览
- 5.2 Git命令索引
- git clone
- git init
- git checkout
- git revert
- git reset
- 5.3 Git GUI使用
- 5.4 Git 可视化工具
- 第6章 实战篇
- 6.1 GitHub使用介绍
- 6.2 代码覆盖与冲突解决
- 6.3 Clone项目到非空目录
- 6.4 检出指定的目录-稀疏检出
- 6.5 单个文件的回退
- 回退到指定版本
- 提交丢失场景
- 6.6 常用命令
- 6.7 分支合并
- 最简单最常见的Merge
- 取消单个文件的自动merge
- Excel 文件合并处理
- Pull request
- Bitbucket Pull request
- 分支合并之git merge ,git rebase
- 6.8 已控管文件去除版本控管
- 6.9 本地非空目录与远端库对应
- 6.10 如何使用Gitee 控管代码
- 6.11 提交和分支等记录查询
- git log 提交日志及图形化显示
- 6.12 Linux/Windows 免输密码
- 6.13 嵌套目录的代码控管
- 6.14 从远端Tag新建分支并提交到远端
- 6.15 从本地库撤销已经添加的文件或目录
- 6.16 远端库回退
- 神鬼不知之Git远端库回退更改
- 6.17 merge 之后使用git checkout会导致修改丢失吗
- 6.18 将Git远程仓库中的项目迁移到另一个远程库, So easy
- Git 切换Origin
- 第7章 常见问题及解决
- 7.1 Not a valid object name: ‘master’
- 7.2 error: Pulling is not possible because you have unmerged files.
- 7.3 SSL certificate problem
- 7.4 fatal: ambiguous argument 'HEAD^'
- 7.5 You have not concluded your merge (MERGE_HEAD exists)
- 7.6 Please commit your changes or stash them before you merge.
- 7.7 error: path 'xxx' is unmerged
- 7.8 unable to get local issuer certificate
- 7.9 github 无法取code之WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!问题解决
- 问题收集
- git clone 出现 SSL certificate problem: self signed certificate in certificate chain 问题怎么解决
- This branch is out-of-date with the base branch Merge the latest changes from main into this branch.
- 第8章 快速使用
- 快速
- 参考