Git入门
Git入门
一. 导语
1. 版本管理: 集中式VS分布式
提交记录
- svn:SVN只关心文件内容的具体差异
- git:Git记录版本历史只关心文件数据的整体是否发生变化
客户端 - svn:获取文件快照
- git:拉取整个镜像
2. git相关feature
- Git中每个克隆(clone)的版本库都是平等的、完整的
- Git的每一次拉取操作,实际上都是一次对代码仓库的完整备份
- 提交完全在本地完成,无须别人给你授权,你的版本库你作主,并且提交总是会成功【编者注:666】
- Git的提交不会被打断,直到你的工作完全满意了,PUSH给他人或者他人PULL你的版本库,合并会发生在PULL和PUSH过程中,不能自动解决的冲突会提示你手工完成
- git的版本号为全球版本号
二. 工作区
任何文件在git的内部都有三种状态:已修改modified、已暂存staged、已提交committed
1. 工作目录(working directory)
对文件进行增删改的地方(modified),是唯一对Git用户可见的区域
2. 暂存区(staging area)
将修改的文件放在了下次提交的清单里
3. 本地仓库(repository)
文件已经被安全地保存在本地仓库中【commit】
三. 远程管理
1. 传输协议
-
本地传输协议
即使用本地仓库作为远程仓库,多用于构建共享文件系统(NFS) -
SSH协议
最常见的协议,它限制了仓库的匿名访问,不适合开源项目。传输的数据是经过压缩的,因此传输的速度得以加快
非对称加密(公钥密码体制)
- 公钥
- 私钥
-
Git协议
Git 协议是现存最快的传输协议,但是其缺少授权机制,Git协议可能也是最难架设的协议。它要求有单独的守护进程,需要定制
【一般搭配SSH接口使用,少数开发者拥有推送权限,其他人通过git://拥有只读权限】 -
HTTP/s协议
架设简单,只需要把 Git 的裸仓库文件放在 HTTP 的根目录下,配置一个特定的post-update挂钩(hook)就可以搞定。但是其客户端效率低,网络开销大
2. 远程操作命令
四. 分支管理
1. master branch
2. release branch/bugfix branch
3. feature branch/topic branch
4. vendor branch
基于第三方上游项目进行开发的项目(需要时刻pull上游项目的修改)