文章目录

  • 一、版本控制
    • 1、版本控制的功能:
      • (1)追踪文件的变更
      • (2)并行开发
    • 2、版本控制的发展历程
      • (1)本地版本控制系统
      • (2)集中化的版本控制系统
      • (3)分布式版本控制系统(Git)
  • 二、Git
    • 1、Git的结构
    • 2、命令行的操作
      • (1)本地库初始化
      • (2)设置签名
      • (3)状态查看(提交前后)
      • (4)查看历史版本记录
      • (5)版本的前进/后退
      • (6)比较文件间差异
    • 3、分支操作
      • 解决分支冲突

一、版本控制

版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。

1、版本控制的功能:

(1)追踪文件的变更

它将什么时候、什么人更改了文件的什么内容等信息忠实地了记录下来。

每一次文件的改变,文件的版本号都将增加。

(2)并行开发

软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。

并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。

2、版本控制的发展历程

(1)本地版本控制系统

本地版本控制系统有很多,大多都是采用某种简单的数据库来记录文件的历次更新差异。其中最流行的一种叫做 RCS ,现今许多计算机系统上都还看得到它的踪影。

RCS 的工作原理:在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

(2)集中化的版本控制系统

集中化的版本控制系统解决了本地版本控制系统中不同系统上的开发者无法协同工作的缺点。

集中化的版本控制系统中有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。

多年以来,这已成为版本控制系统的标准做法。

各个开发者都是通过同一个集中管理的服务器进行工作,所以在一定程度上每个开发者都可以看到其他人的工作内容,另外,作为项目的管理者也可以轻松掌控每个开发者的权限,这比在各个客户端上维护本地数据库来得轻松容易。

当然因为是单点集中管理,存在较大的缺点:

  1. 中心服务器宕机后,所开发者都无法工作
  2. 中心数据库丢失,所有文件都丢失,每个开发者本地保存的只是部分数据的快照,并不完整。

(3)分布式版本控制系统(Git)

采用分布式版本控制系统的客户端并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。(过程中对文件的所有操作都是会被完整记录下来的)

这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。

因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。

分布式版本控制系统和集中化的版本控制系统的最大区别在于:集中化版本控制系统的部分机器保存的只是部分数据的快照,而分布式版本控制系统保存的是整个代码仓库的镜像。

二、Git

1、Git的结构


2、命令行的操作

(1)本地库初始化

 1. cd +路径  # 打开某文件2. cd ..     # 返回上一级目录3. git init    # 本地库初始化4. ll           #详细罗列当前目录下的文件5. ls -al      #带隐藏文件一并显示
  1. 选定想作为工作区的文件夹
  2. 使用 cd 命令进入该文件夹目录下
  3. git init 初始化(若在该文件夹里出现 .git 文件,则说明初始化成功)

.git 是隐藏目录需要采用 ls -al 命令:

.git 目录中存放的是本地库相关的子目录和文件,不要删除,也不要胡乱修改

(2)设置签名

所谓的签名就是设置一个用户名称和一个用户email,此处的签名只看作是一个特定的字符串(email也不需要真实有效),只用来区分不同的开发人员,并不作他用。

这里的签名就是一个标志!

辨析:这里设置的签名和登录远程库(代码托管中心)的账号、密码没有任何关系。

  1. 项目级别/仓库级别:仅在当前本地库范围内有效
git config user.name + 名字
git config user.email + 邮箱

签名信息保存在 .git 目录下的 config 文件中

2.系统用户级别:登录当前操作系统的用户范围

git config --global user.name 0
git config --global user.email 0@0


信息保存位置:~/.gitconfig (根目录下的 .gitconfig文件中)

对于种签名的优先级如下:

(3)状态查看(提交前后)

查看状态:包括当前所在分支,是否有待添加到缓冲区的内容,是否有待提交到本地库的内容

git status   #状态查看
vim + 文件名  # 采用vim编译器编辑文件

git add + 文件名   #将文件添加到缓存区
git commit [-m "注释" +文件名]    #将文件提交到本地库


(4)查看历史版本记录

git log      # 信息最完整git log --pretty=oneline    #以一行形式展示git log --oneline   #精简一行git reflog

(5)版本的前进/后退

(6)比较文件间差异

3、分支操作

git branch + 分支名        # 创建分支
git branch -v           #查看当前所有分支
git checkout + 分支名 #切换到某个分支上
git merge + 有新内容的分支    #别的分支合并到当前分支

解决分支冲突

当两个分支都修改了同一个地方,而且修改为的内容各不相同,此时执行合并命令的时候就会发生冲突,git本身无法决定应该以哪个分支的修改为准,此时,git会进入人工编辑状态,有用户自行决定!

【Git版本控制】——保姆级教程相关推荐

  1. Git仓库 保姆级教程

    Gitee的使用教程 一.Git仓库介绍 1.概念 2.Git 文件的三种状态&工作模式 二.Git 的安装 1.Git下载 2.Git安装 三.Git的使用 1.创建账户 2.Git的基础指 ...

  2. git、github保姆级教程(手把手交)以及如何在github上提交pr,参与开源项目

    git.github保姆级教程(手把手交)以及如何在github上提交pr,参与开源项目 一.git的安装 直接参考 git官方网站:https://git-scm.com/ 二.git的使用(从新手 ...

  3. 保姆级教程:手把手教你搭建个人网站

    保姆级教程:手把手教你搭建个人网站 前言 准备与搭建 1.Git管理工具的下载与安装 2.nodejs环境安装 3.hexo博客框架下载 npm换国内源 使用npm下载hexo博客框架 初始化mybl ...

  4. AI绘图–Disco Diffusion使用指南+本地化保姆级教程

    文章封面为个人AI绘图训练结果 项目传送门:传送门 (谷歌警告) 该项目为免费使用的AI绘图项目,并且可以在本地搭建部署环境. AI绘图对于人脸处理仍处于较为实现困难的阶段,因此该项目更适合用于各类场 ...

  5. ACME网站证书自动化保姆级教程

    更好的阅读体验和更多文章请移步Blog: https://blog.zhou.icu/archives/acme网站证书自动化保姆级教程 本文参考(复制)自:使用 GitHub Actions 自动申 ...

  6. 【宇麦科技】群晖NAS套件之Drive的安装与使用(一),保姆级教程来喽!

    Synology Drvie 随时存取,不限平台 可从浏览器.桌面客户端,和移动设备上随时存取数据. 同步和备份 通过实时同步.备份和计划备份重要文件夹,保护您的数据,并避免数据因误删或勒索软件威胁而 ...

  7. 保姆级教程!将 Vim 打造一个 IDE (Python 篇)

    从上周开始我就开始折腾 ,搞了一下 Vim IDE for Python & Go,我将整个搭建的过程整理成本篇文章分享出来,本篇是 Python 版本的保姆级教程,实际上我还写了 Go 版本 ...

  8. github博客自动同步到gitee(保姆级教程)

    github博客自动同步到gitee(保姆级教程) 前言: 由于国内网访问github实在太慢!虽然在公司可以连接外网访问还算可以,但是回学校想看看博客或者分享给别人的时候经常会崩掉!于是我想可不可以 ...

  9. 50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 下

    文档大纲: 本文上半部分之前已经发过了,传送门:50000字,数仓建设保姆级教程,离线和实时一网打尽(理论+实战) 上 此篇文章是整个文档的下半部分,将接着上半部分从第五章开始. 五.实时数仓建设核心 ...

  10. 万字长文:Stable Diffusion 保姆级教程

    万字长文:Stable Diffusion 保姆级教程 2022年绝对是人工智能爆发的元年,前有 stability.ai 开源 Stable Diffusion 模型,后有 Open AI 发布 C ...

最新文章

  1. 初识tmux---编译安装tmux
  2. 【控制】《多无人机协同控制技术》周伟老师-第4章-基于 PID 的无人机编队运动控制策略
  3. 【Redis】新浪微博与微信Redis架构实战 - 笔记
  4. why product overview page could not be displayed in QI2 506
  5. 为什么 MapReduce 再次流行起来了?
  6. html背景图平移显示一次,js实现单张图片平移切换效果
  7. GoAhead WebServer 架构
  8. 影音先锋 android下载地址,影音先锋手机版-影音先锋下载v5.8.2 安卓手机版-西西软件下载...
  9. JAVA 进制转换的几个方法
  10. MFC小游戏之坦克大战
  11. pyspark 读mysql数据_spark读mysql数据
  12. 修改yum源带来的问题 curl: (35) Cannot communicate securely with peer: no common encryption algorithm(s).
  13. libero soc 仿真74HC161
  14. IIS 发生意外错误 0x8ffe2740
  15. 高通揭秘“地表最强”骁龙855,专为AI新增张量加速器,每秒7万亿次运算
  16. [英语阅读]你的英文名特别吗
  17. Docker下载和设置代理
  18. JAVA中 什么是方法签名?
  19. 纯CSS实现一个三角形加圆角三角形
  20. Android ART虚拟机执行引擎-Interpreter(八)

热门文章

  1. 中达优控plc触摸屏一体机笔记
  2. iWebOffice2003.ocx 的程序集成
  3. MIKE 21 教程 1.4 网格搭建界面介绍之高程数据输入与网格导出 (Mesh Generator 工具)
  4. 去掉cajview阅读器右上角的图标方法
  5. Linux快速入门(操作基础)
  6. java使用第三方字体库的方法,使用第三方ttf/ttc等字体库的方法
  7. 【全栈计划 —— 编程语言之C#】 C# 实现双人飞行棋小游戏
  8. react中实现取色器的效果React Color
  9. 转载:开源飞控的前世今生
  10. shell命令之zip压缩和解压