git介绍及使用指南
文章目录
一、git 介绍
C 语言编写的一个分布式版本控制系统
1.git工作原理
1.Workspace:工作区:本地电脑存放项目文件的地方
2.Index / Stage:暂存区:在使用git管理项目文件的时候,其本地的项目文件会多出一个.git的文件夹,将这个.git文件夹称之为版本库。其中.git文件夹中包含了两个部分,一个是暂存区(Index或者Stage),顾名思义就是暂时存放文件的地方,通常使用add命令将工作区的文件添加到暂存区里
3.Repository:仓库区(或本地仓库):使用commit命令可以将暂存区中的文件添加到本地仓库中
4.Remote:远程仓库:不是在本地仓库中,项目代码在远程git服务器上,比如项目放在github上,就是一个远程仓库,通常使用clone命令将远程仓库拷贝到本地仓库中,开发后推送到远程仓库中即可
2.git 和 svn 区别
- svn 集中式(有单独的服务器)
- git 分布式(每一台都可以存储)
3.git 和 svn 差异对比
差异点 | svn | git |
---|---|---|
系统特点 | 1.集中式版本控制系统(文档管理很方便) 2.企业内部并行集中开发 3.windows 系统上开发推荐使用 4.克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约 1500 个文件,用时将近一个小时 |
1.分布式系统(代码管理很方便) 2.开源项目开发 3.mac,Linux 系统上开发推荐使用 4.克隆一个拥有将近一万个提交(commit),五个分支,每个分支有大约 1500 个文件,用时 1 分钟 |
灵活性 | 1.搭载 svn 的服务器出现故障,无法与之交互 2.所有的 svn 操作都需要中央仓库交互(例:拉分支,看日志等) |
1.可以单机操作,git 服务器故障也可以在本地 git 仓库工作 2.除了 push 和 pull(或 fetch)操作,其他都可以在本地操作 3.根据自己开发任务任意在本地创建分支 4.日志都是在本地查看,效率较高 |
分支方面 | 1.拉分支更像是 copy 一个路径 2.可针对任何子目录进行 branch 3.拉分支的时间较慢,因为拉分支相当于 copy 4.创建完分支后,影响全部成员,每个人都会拥有这个分支 5.多分支并行开发较重(工作较多而且繁琐) |
1.我可以在 Git 的任意一个提交点(commit point)开启分支!(git checkout -b newbranch HashId) 2.拉分支时间较快,因为拉分支只是创建文件的指针和 HEAD 3.自己本地创建的分支不会影响其他人 4.比较适合多分支并行开发 5.git checkout hash 值(切回之前的版本,无需版本回退) |
版本控制 | 1.保存前后变化的差异数据,作为版本控制 2.版本号进行控制,每次操作都会产生一个高版本号(svn 的全局版本号,这是 svn 一个较大的特点,git 是 hash 值) |
1.git 只关心文件数据的整体发生变化,更像是把文件做快照,文件没有改变时,分支只想这个文件的指针不会改变,文件发生改变,指针指向新版本 \2. 40 位长的哈希值作为版本号,没有先后之分 |
工作流程 | 1.每次更改文件之前都得 update 操作,有的时候修改过程中这个文件有更新,commit 不会成功 2.有冲突,会打断提交动作(冲突解决是一个提交速度的竞赛:手快者,先提交,平安无事;手慢者,后提交,可能遇到麻烦的冲突解决。) |
1.开始工作前进行 fetch 操作,完成开发工作后 push 操作,有冲突解决冲突 2.git 的提交过程不会被打断,有冲突会标记冲突文件 |
学习成本 | 使用起来更方便 |