Git 是一个免费开源的分布式版本控制系统,用于跟踪文件的更改,特别是源代码。它允许多个开发者协作开发项目,记录每一次代码的变更,并可以轻松地回滚到之前的版本。
版本控制系统分为
集中式
和分布式
。
- 集中式:svn
- 分布式:git
Git官方文档:https://git-scm.com/book/zh/v2
一个git仓库包含项目的所有文件和历史版本信息,通常位于 .git
目录中。
分支是代码开发的独立线路。master
(或 main
)是默认分支,开发人员可以创建新的分支以进行独立开发。
提交是对文件的快照,记录了文件的状态和更改。每次提交都有一个唯一的哈希值。
暂存区是一个中间区域,用来保存你想要提交的更改。
工作区是你当前正在工作的目录,包含所有未提交的代码。
远程仓库是托管在服务器上的仓库,开发者可以从中拉取或推送代码。
工作区
(Working Directory):也叫工作目录或本地工作目录,就是我们自己电脑上的 .git
所在的目录。
暂存区
(Stage Area/Index):是一种临时存储区域,用于保存即将提交到Git仓库的修改内容,暂存区是在Git进行版本控制时非常重要的一个区域。一般存放在 .git
目录下的 index 文件,所以我们把暂存区有时也叫索引(index)。
本地仓库
(Local Repository):通过 git init
命令创建的仓库,它包含了完整的项目历史和元数据,是Git存储代码和版本信息的主要位置。工作区有一个隐藏目录 .git
,这个不算工作区,而是Git的版本库。
远程仓库
(Remote Repository):托管在远程服务器上的仓库。
本地仓库和远程仓库是两个仓库,它们之间是相互独立的。我们可以在本地仓库中做任何修改,但是这些仓库并不会影响到远程仓库,同样远程仓库的修改也不会影响到我们本地仓库。
因此,我们需要一种机制来同步本地仓库和远程仓库的修改内容,让它们的状态保持一致,那这个同步的过程就涉及到 Git 中两个新的命令
push
和pull
。这两个命令的含义和它们的名字一样,一个表示推送,一个表示拉取。
- push:把本地仓库的修改推送给远程仓库
- pull:把远程仓库的修改拉取到本地仓库
已修改
(Modified):修改了文件,但没保存到暂存区。
已暂存
(Staged):把修改后的文件放在暂存区。
已提交
(Committed):把暂存区的文件提交到本地仓库。
当我们的项目被git管理之后,它就不是一个单纯的项目了(项目中的文件都会被git所管理,每个文件都会被分配不同的状态)。
git中的文件有两种状态:未跟踪 和 已跟踪。
main
:默认主分支
origin
:默认远程仓库
HEAD
:指向当前分支的指针
HEAD^
:上一个版本
HEAD~4
:上4个版本
.git
:Git仓库的元数据和对象数据库.gitignore
:忽略文件.gitattributes
:指定文件的属性,比如换行符.gitkeep
:使空目录被提交到仓库.gitmodules
:记录子模块的信息