1.版本控制
1.1版本控制介绍
- 协同修改
- 数据备份
- 版本控制
- 权限控制
- 历史记录
- 分支管理
1.2版本控制工具介绍
集中式的版本控制工具:
CVS、SVN、VSS…
分布式版本控制工具:
Git、Merxurial…
2.Git简介
2.1Git的优势
- 大部分操作在本地完成,不需要联网
- 完整性保证
- 尽可能添加数据而不是修改或删除数据
- 分支操作非常快捷流畅
- 与Linux命令全面兼容
2.2Git架构
2.3Git和代码托管中心
代码托管中心的任务:维护远程库
- 局域网环境下
- GitLab服务器
- 外网环境下
- GitHub
- 码云
3.Git命令行操作
常用指令
- git init:初始化仓库
- git status:查看工作区和暂存区状态
- git add [filename] :将文件从本地工作区添加到暂存区
- git commit -m “comment” [filename]
- git config user.name name && git config user.eamil email : 设置仓库级别的签名
- git config --global user.name name && git config --global user.eamil email : 设置用户级别的签名
- git log、git log --pretty=oneline、git log --oneline:打印日志
- git reset – hard [索引号] :版本的回退以及前进,其中索引号从日志中获取
- git remote -v:
- git remote add [远程地址别名] [远程地址]:给远程地址起别名
- git push [远程地址] [分支]:将本地代码库提交到远程库
- git fetch [远程地址] [分支]:
- git merge [远程地址/分支]:
- git pull [远程地址/分支]:将远程库拉取到本地库,以上两个操作可以合并为这一个
- git clone [远程地址]:将代码复制到本地,并初始化仓库
- fork和pull request以及merge是在github界面上进行的操作,设计团队间协作,在不同的远程库进行合并的过程。
- git diff
- git rm --cached [filename]:删除暂存区中的文件
- git rm [filename]:删除工作区和暂存区中的文件
git clone [远程地址]
- 效果
- 完整的把远程库下载到本地
- 创建origin远程地址别名(给远程地址起别名的命令:git remote add origin(别名) www…(远程地址)
- 初始化本地库
Git设置签名
- 形式
- 用户名:Tom
- Email地址:goodmoring@atguigu.com
- 作用:区分不同开发人员的身份
- 辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。
- 命令:
- 项目级别/仓库级别:仅在当前本地库范围内有效
- git config user.name tom_pro
- git config user.email goodMoring_pro@xiaomi.com
- 系统用户级别:登录当前操作系统的用户范围内有效
- git config user.name --global tom_pro
- git config user.email --global goodMoring_pro@xiaomi.com
- 项目级别/仓库级别:仅在当前本地库范围内有效
什么是分支?
在版本控制过程中,使用多条线同时推进多个任务。
分支的好处:
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支重新删除即可。
分支的具体操作
- 查看所有的git分支:git branch -v
- 创建分支:git branch [要创建的分支名称]
- 切换分支git checkout [要切换的分支名称]
- 合并分支
- 第一步:切换到接受修改的分支上 git checkout [被合并分支名]
- 第二步:git merge[有新内容的分支名]
- 解决冲突
- 第一步:手动编辑文件,删除特殊符号,把文件修改到满意为止
- 第二步:git add[文件名]
- 第三步:git commit -m “日志信息”(不能带文件名)
拉取代码到本地库
pull = fetch + merge
- git fetch [远程库地址别名] [远程库分支名]
- git merge [远程库地址别名/远程库分支名]
- 也可以git pull [远程库地址别名] [远程库分支名]
解决冲突
- 要点
- 如果不是基于Github远程库的最新版所做的修改,不能推送,必须先拉取
- 拉取下来后如果进入冲突状态,则按照“分支冲突解决”操作解决急了
fork:涉及到两个远程库之间的操作(跨团队协作)
- 首先登录自己的github账号
- 然后到要参与协作的库的github网址,点击fork
- 然后就看到在自己的远程代码托管中心即github上有了复制的代码
- 接下来就可以执行git clone…将代码下载 到自己的本地库,修改后上传到自己的远程库
- 在github进行操作:
- fork的一方:pull request
- 被fork的乙方:pull request + 代码审核 + merge
4.Git图形化界面操作
5.Gitlab服务器环境搭建
6.Git基本原理
6.1哈希
共同点
- 不管输入数据 的数据量多大,输入同一个哈希算法,得到的加密结果长度固定
- 哈希算法确定,输入数据确定,输出数据能够保证不变
- 哈希算法确定,输入数据有变化,输出数据一定有变化,而且通常变化非常大
- 哈希算法不可逆
Git底层采用的是SHA-1算法。