版本控制 git的原理及其基本操作

一、版本控制


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 分支名
  1. 第一步: 在master分支下1.py里面编写信息,保存,提交到仓库
  2. 第二步: 在bx分支下1.py不同行编写信息,保存,提交到仓库
  3. 第三步: 在主分支master下运行git merge 另一个分支名bx

⑦ 分支冲突

两个分支修改了同一个文件的同一行代码

切换分支到wzy
修改1.py 第5行
添加并提交
切换分支到master
修改1.py 第五行
添加提交
代码合并 git merge wzy

会出现以下问题:
在这里插入图片描述
在这里插入图片描述
解决办法:
只能手动修改

  1. 选择一个分支修改的内容保存退出
  2. 添加
  3. 提交 提交时不用指定文件 git commit -m ‘描述’

四、常用git命令图示:


在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值