版本控制
SVN和Git在版本管理的区别
版本控制工具
集中式版本控制工具:
**SVN** CVS VSS
![在这里插入图片描述](https://img-blog.csdnimg.cn/c88861d765944abda5305f957946d6b3.png)
缺点:客户机保存的只是当前的状态 如果服务器损坏 版本历史全部丢失——单点故障
分布式版本控制工具:
Git Mercurial Bazaar Darcs
任何人都有全部的数据 互相可以传数据——避免了单点故障
Git的简介
Git的结构
Git和代码托管中心
代码托管中心的任务:维护远程库
局域网环境下:
gitlab服务器
外网环境下:
GitHub
码云
本地库和远程库交互的方式
团队内部协作
跨团队协作
Git命令行操作
本地库操作
1.本地库初始化
命令:git init
效果:
注意:.git目录中存放的是本地库相关的子目录和文件 不要删除 也不要胡乱修改
2.设置签名
作用:区分不同开发人员的身份
命令:
项目级别、仓库级别:仅在当前本地库范围内有效
git config
信息保存的位置:./.git/config 文件
系统用户级别:登录当前操作系统的用户范围
git config --global
信息保存的位置:~/.gitconfig文件
优先级:就近原则 项目级别优先级大于系统用户级别 二者都有采用项目级别;如果只有系统用户级别签名 就用系统用户级别;二者都没有的情况是不允许的
远程库操作
添加提交以及查看状态操作
文件内容
提交成功后用status
对文件内容进行修改以后的提交
1 file changed 1 insertion(+)——> 修改了一个文件 改的是一行
基本操作
1.状态查看操作:
git status
查看工作区、暂存区的状态
2.添加操作:
git add[file name]
将工作区的“新建和修改”添加到暂存区
3.提交操作:
git commit -m “commit message”[file name]
将暂存区的内容提交到本地库
4.查看历史记录
前进和后退
git log——查看当前历史版本记录
多屏显示控制方式
空格——向下翻页
b——向上翻页
q——退出
git log对我们来说显示的太多了 简化
git log --pretty=oneline 或者 git log --oneline(简写)——显示内容有差别
git reflog——里面的HEAD@{移动到当前版本需要多少步}
1.基于索引值前进后退
基于索引值前进后退的原理
是有个head指针能够指向现在的版本
后退 git reset --hard HEAD前面的序号
前进也是一样
2.用^和~符号进行后退(不能前进)
注意git reflog显示全部版本 git log --onelinez只显示过去版本
5.删除文件找回
前提:删除前 文件存在的状态提交到了本地库
操作:git resret --hard[指针位置]
删除操作已经提交到本地库 指针位置指向历史纪录
删除操作尚未提交到本地库 指针位置使用HEAD
6.比较文件差异
Git分支
在版本控制过程中 使用多条线同时推进多个任务
hot-fix用来更改
创建分支
git branch [分支名]
查看分支
git branch -v
切换分支
git checkout
合并分支
在分支上对文件good.txt进行更改以后提交到分支
可以看到hot_fix分支的版本比master提前(领先一个版本 原来是一样的)
注意 要想要把hot_fix上的变动合并到master分支上 就必须要在master分支上进行操作
step1.切换到接受修改的分支上
step2.执行merge命令
解决冲突
当多个分支同时进行同一个地方的修改的时候 此时合并就回产生冲突
git不知道要用哪一种更改 交给我们自己决定
当我们在文件中更改好 确定修改以后
解决冲突