代码管理-SVN GIT
Tue November 15, 2022 05:34 PM
代码管理
SVN - 集中式
1.特点
- 代码一致性高,每个人都可以看到其他人在项目中做什么,管理员可以掌握每个开发者的权限。
- 必须联网,中央服务器不可靠,易出现单点故障。
- 版本号连续,可以预判下一个版本号。
- 每个子目录都维护.svn目录,记录该目录中文件的修改情况,以及与服务端仓库的对应关系。可以checkout 部分路径下的内容,不用整个版本库或分支。每个子目录下都有单独的.svn目录。
2.实现
分支和标签都来自目录拷贝,通常约定是拷贝在branchs/和tags/目录下。所谓分支、tag 都只是仓库中不同路径的一个对象或索引。
3.优缺点
- 管理方便,逻辑明确
- 集中式服务器更能保证安全性
- 代码一致性高
- 服务器压力大。数据库容量暴增
- 必须链接服务器才能工作
4.适用场景
适合开发人数不多,非开源的项目。
GIT - 分布式
1.特点
- 每个人根据权限不同,不可以看到其他人做的所有事情。
- 没有统一的“中央服务器”,每个人都是一个完整的版本库,意味着任何一处协同用的服务器故障,都可以从其他机器恢复。
- 采用40位哈希值作为版本号,不重复。
- 没有部分检出,本地仓库信息完全维护在project根目录的.git目录下。
2.实现
分支世纪上近视一个包含所指对象校验和哈希值的文件,git的分支是完全隔离的,一个提交一般只能发生在一个分支中。
3.优缺点
- 公共服务器压力和数据量都不会太大
- 速度快、灵活、可以离线工作
- 任意两个开发这之间冲突解决较为简单
- 学习周期相对较长
- 代码保密性差,clone 可以完全公开所有代码和版本信息
4.适用场景
适合分布式团队多人协作,敏捷开发。
5.版本库和工作区
Git的版本库和工作区在同一个目录下,’.git’。他是用来保存元数据和对象数据库的地方。每次clone 镜像仓库的时候,实际拷贝的就是这个目录里面的数据。
- config:存放当前项目配置信息
- objects:提交信息的对象,每次提交的版本号,取版本号前两位为文件夹,文件以后38位组成。
- HEAD:当前分支的指向,一般为master。
- index:暂存区,add
- hooks:脚本,log信息,加密过
6. 4个区 – 核心
- Workspace:工作区,为电脑实际目录
- Index/Stage:暂存区,临时保存你的改动
- Local Repository:仓库区(本地仓库),在.git下
- Remote Repository:远端仓库
7. 3个步骤 – 核心
把所有文件,从工作区放进暂存区
git add .
把所有文件从暂存区提交到本地仓库
git commit
把所有文件从本地仓库推送至远端仓库
git push
8. 5种状态
- Origin:未修改,原始文档
- Modified / Untracked:已修改未添加暂存
- Staged:已修改已添加至暂存区
- Committed:已提交至本地仓库
- Pushed:已推送至远端仓库
9. 两种通信协议方式
HTTPS URLs
GitHub 官方推荐采用该方式,适用面更广,即使在有防火墙或者代理的情况下依旧适用,使用更方便,配置更简单。SSH URLs
采用该方式之前,需要先在本地计算机生成密钥对。
10. git clone 都做了什么?
新建文件夹,默认取url中,‘.git’前一个单词;
mkdir blog
初始化 git;
git init
新增远端,默认名称为‘origin’;
git remote add origin url
从远端获取代码库
git fetch
切换分支
git checkout -b oringin/master