文章目录
一、版本控制
1.版本控制的概念
是对软件开发过程中,各种代码,配置文件,说明文件变更的管理,是软件配置管理的核心思想
2.使用版本控制的原因
开发的特点(为什么要用到版本控制)
编写一个成熟可用的程序是一个工作量很大的工程,不是我们一次性可以搞定的工作,所以在开发过程中,有以下特点:
1. 多人协作 :开发软件有ui 前端 后端 运维 产品 测试
2. 版本迭代 :针对当前代码进行修改和升级,通过几次迭代,达到预想的目的
3.常见的版本控制工具
① CVS:
是一个c/s的版本控制软件,主要用于开源的软件管理,是多个开发人员通过一个控制中心系统来记录版本,从而达到保证文件同步的目的,是一种很老的集中式版本控制工具
② Svn:
也是集中式版本控制工具,它是最优的集中式控制工具
③ Git:
是一个分布式版本控制工具
4.集中式和分布式管理工具的概念和区别
① 集中式管理工具:
开发者之间的合作方式是共用一个仓库(repository),无论这个仓库是在本地还是在远端,只要是所有成员都共同存取同一个仓库,那么这种方式就是集中式(centralized)版本控制。
优缺点
缺点: 代码集中于服务器,一旦代码出现问题,很难处理
优点: 代码都集中于svn服务器,不会发生个别新手污染代码的情况
② 分布式管理工具:
每个客户端就是都是一个服务器,都有一个版本库,开发者可以在无网络的环境中进行代码的操作,是通过比对进行下载
优缺点
优点: 把东西copy到电脑上,可以把两个仓库作合并或对比,不一样的添加上去,可以对其他的进行修改;没网也可以相互拉取上传文件,方便,局域网就可以用。
缺点: 会发生个别新手污染代码的情况
5.总结
① 版本控制:
管理文件的内容的变更
② 分类:
集中式: 有一个版本仓库 所有人去这个仓库下载或者上传
分布式: 把每个人的电脑作为一个版本仓库 我们可以在自己的电脑上做版本的管理
二、git的原理
1.git的发源
作者linux torvalds
绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上。项目组开始启用分布式版本控制系统 BitKeeper 来管理和维护代码。到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束(项目组成员开源 BitKeeper代码),他们收回了免费使用 BitKeeper 的权力。 Linux 的缔造者 Linus Torvalds 开发了一套属于自己的版本控制系统。
2.Git的原理
git分为三个部分: 工作区 暂存区 仓库
① 工作区: 对于文件的添加,修改,删除
② 暂存区: 将工作区的操作完成小阶段的存储,是版本库的一部分
③ 仓库区: 表示个人开发的小阶段,记录的各种版本都是可以查看回退
git原理图:
三、git基本操作
1.下载安装
通过官网下载git的安装包,git官网地址: https://git-scm.com/
2.创建目录 在此目录内执行 init 初始化仓库
先创建一个文件夹:例如git test
进入文件夹
右键进入命令行 Git Bash Here
① 可视化
② 命令行
执行初始化仓库命令
git init
初始化一个git目录 创建一个仓库
git init 执行结束目录下会多一个.git的隐藏文件
3.配置个人信息
① 配置局部身份
git config user.name 'name' 设置用户名
git config user.email 'name6.com' 设置用户邮箱
查看设置的局部身份
② 配置全局身份
git config --global user.name 'zhangsan'
git config --global user.email 'zhangsan@126.com'
全局身份文件路径 家目录/.gitconfig
全局身份和局部身份的使用顺序:
先去找局部的身份,如果没有再去找全局的身份配置
4.git提交一个版本的操作
① 先创建一个文件
(查看的时候,工作区有红色变动的文件)
touch 1.txt
②查看状态
git status
③ 将文件提交到暂存区 (提交所有文件可以用. 或 *,多个文件用空格隔开)
git add
查看git版本库状态 绿色表示暂存区的文件 (代表待提交到仓库)
④ 将暂存区中的文件提交到仓库并生成一个新的版本
git commit -m '描述' 要提交文件
⑤ 查看git版本库状态 当工作区没有变动 暂存区中的内容已经提交 会提示干净的工作区
⑥ 查看版本信息
git log
git reflog
推荐使用reflog 会记录已提交和回退的所有版本记录,log 无法记录回退的记录
5.git的一些基本操作
① 查看版本差异
git diff 版本号 版本号
- 先查看版本信息,找到版本号
- 再查看差异
② 版本回退
先在1.txt中添加11111
vim 1.txt
添加111111111111
提交到仓库
git commit -m '往1.txt加入了111111' 1.txt
-
回退仓库中的代码
git reset --hard 版本号
将整个版本库回退到指定版本
- 查看工作区文件状态
此时恢复到未添加代码的状态
③ 对仓库中的某个文件进行回退 (回退到指定版本的指定文件)
git reset 版本号 文件名
- 第一步:执行 git reset 要回退到的版本号 文件名
- 第二步:查看状态
- - 第三步:执行 git checkout 文件名
- 第四步:执行 git commit -m ‘描述信息’ 文件名
④ 工作区代码回退
git checkout 将内容直接撤销
git restore 将内容撤销
⑤ 暂存区代码回退
git reset HEAD 文件名 将暂存区中的内容直接撤销
git restore --staged 将暂存区的内容撤销至工作区
6.分支操作
①查看所有分支
git branch
② 创建分支
git branch 分支名
③ 切换分支
git checkout 分支名
④ 创建并进入分支
git checkout -b 分支名
⑤ 删除分支
git branch -d 分支名
⑥ 分支代码合并
git merge 分支名
- 第一步: 在master分支下1.py里面编写信息,保存,提交到仓库
- 第二步: 在bx分支下1.py不同行编写信息,保存,提交到仓库
- 第三步: 在主分支master下运行git merge 另一个分支名bx
⑦ 分支冲突
两个分支修改了同一个文件的同一行代码
切换分支到wzy
修改1.py 第5行
添加并提交
切换分支到master
修改1.py 第五行
添加提交
代码合并 git merge wzy
会出现以下问题:
解决办法:
只能手动修改
- 选择一个分支修改的内容保存退出
- 添加
- 提交 提交时不用指定文件 git commit -m ‘描述’