1、Git与svn的比较
svn是集中式版本控制工具的典型代表,版本是在服务器控制的,如果服务器坏掉,只能从客户端上传一个最新的。
Git是分布式版本控制工具的典型代表,本地就能进行完整的版本控制,本地电脑有提交过的所有历史的存储,能避免单点故障。
svn采用的是增量式管理的方式,而Git 采取了文件系统快照的方式。
Git能对团队外开发者贡献的代码进行审核,svn不行。
2、Git的优势
大部分操作在本地完成,不需要联网
完整性保证
尽可能添加数据而不是删除或修改数据
分支操作非常快捷流畅
与Linux 命令全面兼容
3、Git客户端安装
4、Git在本地的结构
Git在本地有3个区域,执行过程如下图:
工作区:写代码、修改代码的地方,新建的文件在工作区
暂存区:打算提交还没提交的,将来可以提交也可以撤回的一个临时区域,执行git add 命令从工作区添加到了暂存区
本地库:存储每一个历史的版本,执行git commit 命令从暂存区提交到了本地库
5、Git 和代码托管中心
Git 与 GitHub 是两个完全不同的东西,GitHub 是 Git 的一个代码托管中心。局域网环境下可以搭建 GitLab 托管中心,外网环境下可以用 GitHub 和码云作为代码托管中心。代码托管中心的任务是帮助维护远程库。
团队内协作,如下图:
甲创建了本地库A,在托管中心创建了远程库B,并且把A的内容push到远程库B,乙从远程库B clone 到本地(会自动创建本地库),修改代码后提交到本地库,然后push到远程库B,(乙不能直接push到B,需要加入团队(甲先邀请乙加入团队)),乙 push 到远程库后,甲就可以pull 拉取到甲的本地。
跨团队协作,如下图:
甲创建了本地库A,在托管中心创建了远程库B,并且把A的内容push到远程库B,乙(不属于甲的团队)从远程库B fork(复制) 一个远程库C(C也在代码托管中心),乙将C clone 到本地(会自动创建本地库),修改代码后提交到本地库,然后push到远程库C,并且向甲发起一个拉取的请求,甲审核后将在线 merge (合并)到远程库B,甲所在团队的人就可以拉取到乙修改点的内容了。