Git作为一个工具,实在是程序员需要学会使用的最重要的工具之一;
Git的起源
Linux内核开源项目参与者众多,为了方便维护工作,减少花在提交补丁和保存归档的繁琐事务上,为了支持非线性开发模式,2002年,开始使用分布式版本控制系统BitKeeper进行管理,然而在2005年,BitKeeper的开发者取消了免费的使用权(因为社区里有人想破解BitKeeper的协议~);
于是Linus开源社区就结合 BitKeeper 的使用经验开发出了自己的版本系统,也就是Git;(最早的Git就是Linux之父Linus开发的)
没有采用集中式的版本控制系统,是因为CVCS必须联网才能工作,且要有一个集中管理的服务器,保存所有文件的修订版本;
什么是Git?
git是一个分布式的版本管理工具:
- 分布式,所以同一个Git仓库,可以分布到不同的机器上;
- 版本控制工具,所以可以多人同时开发(支持非线性开发模式);所以可以找回历史代码(能够存储内容,追踪更改记录);
Git的特点
- Git跟踪并管理的是修改,而非文件;
- 没有“中央服务器”,每个本地电脑上都是一个完整的版本库;(通常也有一台充当“中央服务器”的电脑,方便大家交换修改)
跟踪文本文件的变化
- 跟所有的版本控制系统一样,Git也只能跟踪文本文件(比如TXT文件,网页,程序代码等)的改动;
- 无法跟踪二进制文件(图片,视频等)的变化,只能知道该文件发生了变化,但是不知道改动的是什么;
- 如果项目包含很多非文本文件,那么经常地更新 Git 将使得实际存储库大小变得越来越大;
什么是GitHub?
github是一个网站,提供git仓库的托管服务,注册一个github账号,就可以免费获得git的远程仓库;(充当服务器的角色)
Git的工作流
工作区:保存实际文件的目录;
版本库:名字是 .git 的隐藏文件夹,保存本地存储库的目录;
暂存区(Index):版本库里有个叫 index 的暂存区,是缓存区域,用于临时保存改动(在对文件进行修改之后自动创建);
第一步是添加修改,把文件修改添加到暂存区;
第二步是提交更改,把暂存区的所有内容提交到指定分支;
第三步是同步更改,把更改好的分支同步到远程仓库;