Git的四大区域
前提
工作目录,暂存区域和本地仓库组合,构成了你的本地环境。远程仓库则是一个单独的Git仓库,他就是在网上的一个仓库。
工作目录
本地系统的任何目录或者目录树(就是指文件夹)都可以成为Git仓库的工作目录。工作目录可以拥有形成整体工作区的任意数量子目录。(就是说可以有无限多个子文件夹,当然这只是理论,太多文件夹会导致上传速度非常缓慢)
使用初始化git init以后,所有的子目录就会成为工作目录的一部分。除非使用.gitgnore文件忽略他们或者他们是Git子模块的一部分。(后面会提到)
暂存区域
暂存区在很多初学者看来都是没有必要的一个区域,但实际上,它在Git中充当了非常重要的角色。
暂存区的意义
暂存区就是提交到本地仓库之前的一个暂存变更的地方。
而这个区域的实用性方式有两种:用户发起的以及Git发起的。这两种方式都为用户提供了好处,其差别在于,在哪个操作或过程中,将内容放入该级别。
准备场景
在这个场景中,用户将其在工作区中完成的变更放到暂存区。如果要对很多文件进行变更以便于修复一个bug,只改了一个小文件就上传了,将会导致仓库中造成混乱。而如果有了一个暂存区,当改了一个小文件,先放到暂存区,一直等到我们将所有要改的文件都放到暂存区再一起推送,这就不会导致仓库混乱。
修复场景
我们知道,Git是可以修改历史的,也就是说,他们可以修改仓库中之前的提交。而这个操作允许用户从仓库中拉取回最后一次提交,更新其内容,并且将更新后的提交推送回前一次提交的位置。(具体怎么做,后面会说)
Git何时会使用暂存区域?
我们在处理合并冲突的时候,通常就会在暂存区中使用。(具体怎么做,后面会说)
本地仓库
本地仓库存于用户本地机器上Git级别的最后一部分,内容一旦被创建或更新并且之后被暂存,他就准备好被提交到本地仓库中。

本地仓库好的一面是他当前用户独占使用的一个源仓库,在用户对内容感到满意之前还能进行修改。之后会将内容发送到远程仓库,并在远程仓库可以给别的用户使用。前面也说道了,Git是可以断网进行源控制操作的,就是说在断网的情况下,也是可以提交到本地仓库的。
缺点就是如果本地没同步到远程仓库,如果本地仓库不小心被删除,就有可能导致数据丢失。
远程仓库
远程仓库是多个Git用户从各自本地仓库向上同步变更的地方。
我们需要注意几个要点:
- 远程仓库是唯一的。同一个项目通常我们会用同一个远程仓库。
- 可以根据需要,多次将远程仓库克隆到不同的本地仓库。
- 远程仓库不会对内容进行面向用户的更改,比如解决冲突。如果内容向远程推送时需要解决冲突,就必须要拉回到本地来进行冲突解决。
Git中不同级别之间移动的核心命令
出发 | 目的地 | 命令 | 备注 |
---|---|---|---|
工作目录 | 暂存区域 | add | 暂存本地变更 |
暂存区域 | 本地仓库 | commit | 仅提交暂存区中的内容 |
本地仓库 | 远程仓库 | push | 推送到远程仓库 |
本地仓库 | 工作目录 | checkout | 切换当前分支 |
远程仓库 | 本地环境 | clone | 创建本地仓库和工作目录(这里只有一个空文件夹,没有初始化) |
远程仓库 | 本地仓库 | fetch | 更新远程分支的引用(这里已经初始化了) |
远程仓库 | 本地仓库和工作目录 | pull | 抓取和合并到本地分支和工作目录 |