简介
Git 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。 Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
特点
- 从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。
- 在自己的机器上根据不同的开发目的,创建分支,修改代码。
- 在单机上自己创建的分支上提交代码。
- 在单机上合并分支。
- 把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
- 生成补丁(patch),把补丁发送给主开发者。
优点
- 适合分布式开发,强调个体。
- 速度快,体积小,成熟的架构,开发灵活。
- 离线工作,管理代码成本低,不太依赖服务器。
- 公共服务器压力和数据量都不会太大。
- 任意两个开发者之间可以很容易的解决冲突。
- 良好的分支机制,可以让主干代码保持干净。
不足
- 代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。
- 虽然入门简单,但作为一款代码管理工具,学习周期相对而言比较长。
递归子模块
有种情况我们经常会遇到:某个工作中的项目需要包含并使用另一个项目。 也许是第三方库,或者你独立开发的,用于多个父项目的库。现在问题来了:你想要把它们当做两个独立的项目,同时又想在一个项目中使用另一个。
Git 通过子模块来解决这个问题。 子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
克隆仓库
暂存区/工作区
- 工作区:日常开发使用。
- 暂存区:暂存区不会存储,只是进行对放置暂存区的文件进行标注,已表示这些文件发生过修改。
暂存区也叫做版本库,由隐藏文件.git 进行管理。
工作流程
- 在工作区内添加、修改文件。
- 将需要进行版本管理的文件放入暂存区。
- 将暂存区内文件提交至git仓库。
因此,git管理文件有三种状态:已修改,已暂存,已提交。
操作
推送操作
推送角标数字代表未推送至服务器,已提交的数量。
拉取操作
拉取远程分支默认为与远程服务器分支名相同分支,也可拉取服务器其他分支.
拉取:从远程拉取最新版本到本地自动合并。
抓取:从远程获取最新版本到本地不会自动合并。
实际使用中 使用抓取更安全,因为在抓取后可以看清楚更新情况,再决定是否合并。
分支操作
分支命名不能与代码库其他分支名重复。