分布式版本控制系统——Git

分布式版本控制系统——Git

  • 一、Git安装
  • 二、创建版本库
  • 三、将文件交给Git管理
  • 四、Git的工作区和暂存区
    • 1.工作区(Working Directory)
    • 2.版本库
  • 五、版本回退和撤销修改
    • 1.版本回退
    • 2.撤销修改
  • 六、删除文件
  • 七、常用基础命令总结
  • 八、参考


  • 分布式版本控制系统,每一台计算机都有一个完整的版本库。
  • 集中式版本控制系统,版本库存放在中央服务器。

  • 所有的版本控制系统,其实只能跟踪文本文件的改动,比如TXT文件,网页,所有的程序代码等等,Git也不例外。版本控制系统可以告诉你每次的改动,比如在第5行加了一个单词“Linux”,在第8行删了一个单词“Windows”。而图片、视频这些二进制文件,虽然也能由版本控制系统管理,但没法跟踪文件的变化,只能把二进制文件每次改动串起来,也就是只知道图片从100KB改成了120KB,但到底改了啥,版本控制系统不知道,也没法知道
  • MicrosoftWord格式是二进制格式,因此,版本控制系统是没法跟踪Word文件的改动的,如果要真正使用版本控制系统,就要以纯文本方式编写文件。

一、Git安装

  • ① 在 Windows 上使用Git,可以从 Git官网直接下载安装程序,然后按照默认选项安装即可。
  • ② 安装完成后,在开始菜单里找到Git Bash,蹦出一个类似命令行窗口的东西,就说明Git安装成功了。
  • ③ 安装完成后,还需要最后的配置,因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。
    git config --global user.name "Your Name"
    git config --global user.email "email@example.com"
    
    • 注意:git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。

二、创建版本库

  • 版本库也叫仓库(repository),可以简单的理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。
  • ① 首先,选择一个合适的地方,创建一个空目录:
    mkdir -p d:/code/test-git
    cd d:/code/test-git
    pwd
    
    在这里插入图片描述
    • pwd 命令是用来显示当前目录的。
    • 注意:使用Windows系统,为了避免遇到各种莫名其妙的问题,请确保目录名(保留父目录)不包含中文。
  • ② 通过 git init命令把这个目录变成Git可以管理的仓库。
    在这里插入图片描述

三、将文件交给Git管理

  • ① 在刚才的仓库目录 test-git 目录下编写一个 readme.txt 文件,内容如下:

    Git is version control system.
    Git is free software.
    
    • 如果使用 Windows 出现上面的警告,我们现在先不用管的,不会影响使用的。
  • ② 用命令 git add 告诉Git,把文件添加到仓库

    git add <fileName> #添加一个文件
    git add . #添加所有文件
    

    在这里插入图片描述

  • ③ 用命令 git commit -m "这里写备注" 告诉Git,把文件提交到仓库:
    在这里插入图片描述

    • git commit 一次可以提交很多文件。
  • git status命令可以让我们时刻掌握仓库当前的状态。

  • git diff <filename>命令顾名思义就是查看difference,可以查看修改的内容。

  • 例如下面我修改readme.txt文件后查看,当前仓库的状态以及修改的内容:
    在这里插入图片描述

注意:Git管理的是修改(删除一行、删除一个文件、添加一个字符等都算修改),而不是管理的文件。
每次修改,如果不用git add命令到暂存区,拿就不会加入到commit中,所以如果你你想每一次的修改都被commit,那么你要确保每一次修改后都有被git add


四、Git的工作区和暂存区

1.工作区(Working Directory)

  • 就是在自己电脑里能看到的目录,比如我们前面创建的test-git文件夹就是一个工作区。

2.版本库

  • 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。
  • Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master(main),以及指向master(main)的一个指针叫HEAD
    在这里插入图片描述
  • 在Git中,用HEAD表示当前版本,也就是最新的提交,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100
  • 前面讲了我们把文件交给Git管理的时候,主要是分两步执行的:
    • 第一步是用git add把文件添加进去,实际上就是把文件修改添加到暂存区
    • 第二步是用git commit提交更改,实际上就是把暂存区的所有内容提交到当前分支。

五、版本回退和撤销修改

1.版本回退

  • git log命令显示从最近到最远的提交日志(查看提交历史),如果嫌输出信息太多,看的眼花缭乱的,可以加上 --pretty=oneline --abbrev-commit参数。
  • git reflog命令,用来记录每一次命令。(查看历史命令)
    在这里插入图片描述
    • 那一大串的数字和字母是commit_id
  • HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard <commit_id>。如果是回退到上一个版本直接使用命令git reset --hard HEAD^
    在这里插入图片描述

2.撤销修改

  • (1)修改没有提交到暂存区中:
    • git checkout -- <filename>,可以丢弃工作区的修改:
      • ① 一种是文件自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态。
      • ② 一种是文件已经添加到暂存区后,又做了修改,现在,撤销修改就回到添加到暂存区后的状态。
    • 总之,就是让这个文件回到最近一次git commitgit add时的状态。
  • (2)修改提交到了暂存区:
    • git reset HEAD <filename>命令可以回到上面的场景(1)。
  • (3)修改提交到了版本库中,想要撤销本次的修改,通过上面的版本回退可以实现撤销修改,但是前提是没有推送到远程库。

六、删除文件

  • 直接在文件管理器中把没用的文件删了,或者用 rm 命令删了:
    • ① 如果确定从版本库中删除该文件,那就用命令 git rm <filename>删掉,然后用git commit
    • 先动手删除,然后使用git rm <filename>git add <filename>效果一样的。

七、常用基础命令总结

git init #创建一个版本库
git add <filename> #提交一个文件到暂存区
git add . #将所有修改提交到暂存区
git commit -m "comment" #将所有暂存区的修改提交到版本库中
git status #查看当前仓库当前的状态
git diff <filename> #查看修改的内容
git log --pretty=oneline --abbrev-commit #查看最近到最远的提交日志
git reflog # 查看每一次的命令
git rm <filename> #删除一个文件
git checkout -- <filename> #让这个文件回到最近一次git commit或git add时的状态
git reset --hard <commitId> #回退到指定的版本。
git reset --hard HEAD^ #退回到上一个版本
git reset HEAD <filename> #撤销暂存区的修改

八、参考

[1]. Git官网
[1]. Git简介 - 廖雪峰的官方网站——直接看这个谢谢,写的太好了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/315498.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

文章目录 一、视频与 JPG 静态图片互相转换1、视频转静态图片2、视频转多张静态图片3、多张静态图片转视频 二、视频与 GIF 动态图片互相转换1、视频转成 GIF 动态图片2、 GIF 动态图片转成视频 一、视频与 JPG 静态图片互相转换 1、视频转静态图片 执行 ffmpeg -i input.mp4 …

C++ 哈希

文章目录 哈希概念哈希冲突哈希函数闭散列闭散列实现开散列开散列实现 字符串Hash函数 哈希概念 因为&#xff0c;顺序结构以及平衡树中&#xff0c;元素关键码与其存储位置之间没有对应的关系&#xff0c; 因此在查找一个元素时&#xff0c;必须要经过关键码的多次比较。 顺序…

ROS摄像机标定

文章目录 一、环境准备二、摄像头标定2.1 为什么要标定2.2 标定前准备2.2.1 标定板2.2.2 摄像头调焦 2.3 开始标定2.4 测试标定结果 总结参考资料 一、环境准备 安装usb_cam相机驱动 sudo apt-get install ros-noetic-usb-cam 安装标定功能包 sudo apt-get install ros-noet…

uniapp获取当前位置及检测授权状态

uniapp获取当前位置及检测授权定位权限 文章目录 uniapp获取当前位置及检测授权定位权限效果图创建js文件permission.jslocation.js 使用 效果图 Android设备 点击 “设置”&#xff0c;跳转应用信息&#xff0c;打开“权限即可”&#xff1b; 创建js文件 permission.js 新建…

一觉醒来 AI科技圈发生的大小事儿 04月27日

⏩阿里智能体“组装工厂”开源&#xff01;0经验搞定上万Agent并发 阿里巴巴通义实验室开源了多智能体编程框架与开发平台AgentScope&#xff0c;旨在提供高易用的编程体验、稳定可靠的运行时保障&#xff0c;并且为开发者提供了分布式和多模态的技术支持。AgentScope提供了拖…

哈夫曼编码---一种无损数据压缩算法

哈夫曼编码是一种无损数据压缩算法&#xff0c;该算法在数据压缩&#xff0c;存储和网络传输等领域广泛引用&#xff0c;对互联网的发展也产生了深远的影响。 大家熟知的数据无损压缩软件&#xff0c;如WinRAR&#xff0c;gzip&#xff0c;bzip&#xff0c;lzw&#xff0c;7-z…

Linux操作系统基础开发工具的使用——vim,gcc/g++,MakeFile,gdb,yum

目录 一&#xff0c;vim&#xff08;Linux常用文本编辑器&#xff09; 1.1 关于vim 1.2 vim的三种常用模式 1.3 各种模式的切换&#xff08;一图览&#xff09; 1.4 vim命令模式各命令集合 1.5 vim底行模式各命令集合 1.6 vim配置 二&#xff0c;gcc/g&#xff08;Linu…

【鸿蒙应用】理财App

目录 第一节项目讲解项目介绍 第二节&#xff1a;项目创建登录静态框架编写登录页面设稿新建项目控制台添加项目Login页面封装标题组件 第三节&#xff1a;登录页静态表单编写第四节—内容页架构分析底部栏组件第五节—底部栏组件切换第六节&#xff1a;首页静态页编写第七节&a…

STM32与OLED显示屏通信(四针脚和七阵脚)

系列文章目录 STM32单片机系列专栏 C语言术语和结构总结专栏 文章目录 1. 单片机调试 2. OLED简介 3. 接线 4. OLED驱动函数 4.1 四针脚版本 OLED.c OLED.h OLED_Font.h 4.2 七针脚版本 引脚连接 OLED.c OLED.h OLED_Font.h 5. 主函数 工程文件模板 1. 单片机…

Spark和Hadoop的安装

实验内容和要求 1&#xff0e;安装Hadoop和Spark 进入Linux系统&#xff0c;完成Hadoop伪分布式模式的安装。完成Hadoop的安装以后&#xff0c;再安装Spark&#xff08;Local模式&#xff09;。 2&#xff0e;HDFS常用操作 使用hadoop用户名登录进入Linux系统&#xff0c;启动…

CSS 之 transition过渡动画

一、简介 ​ CSS 制作 Web 动画有两种方式&#xff1a; 帧动画&#xff08;Keyframe Animation&#xff09;和过渡动画&#xff08;Transition Animation&#xff09;。针对不同的业务场景中&#xff0c;我们应该选择不同的动画方式&#xff0c;通常来说&#xff1a;对于交互元…

从虚拟化走向云原生,红帽OpenShift“一手托两家”

汽车行业已经迈入“软件定义汽车”的新时代。吉利汽车很清醒地意识到&#xff0c;只有通过云原生技术和数字化转型&#xff0c;才能巩固其作为中国领先汽车制造商的地位。 和很多传统企业一样&#xff0c;吉利汽车在走向云原生的过程中也经历了稳态业务与敏态业务并存带来的前所…

微信第三方开放平台,实现代公众号保留排版样式和图片发布文章

大家好&#xff0c;我是小悟 要想实现代公众号发布文章的功能&#xff0c;就得接入富文本编辑器&#xff0c;市面上富文本编辑器有很多&#xff0c;轻量的、重量的都有。 从开发者的角度&#xff0c;自然把轻量作为第一选择&#xff0c;因为好对接&#xff0c;怎么方便怎么来…

【Python】爬虫-基础入门

目录 一、什么是爬虫 二、爬虫的主要用途 三、学会爬虫需要掌握的技能 四、爬虫使用的语言 五、编写爬虫需要的库&#xff0c;以python为例 六、爬虫示例-python 示例一 示例二 示例三 一、什么是爬虫 爬虫&#xff0c;又称网络爬虫或网页爬虫&#xff0c;是一种用来自…

Windows电脑中护眼(夜间)模式的开启异常

我的电脑是联想小新16pro&#xff0c;Windows11版本。之前一直可以正常使用夜间模式&#xff0c;但是经过一次电脑的版本更新之后&#xff0c;我重启电脑发现我的夜间模式不能使用了。明明显示开启状态&#xff0c;但是却不能使用&#xff0c;电脑还是无法显示夜间模式。 询问…

Drive Scope for Mac:硬盘健康监测分析工具

Drive Scope for Mac是一款专为Mac用户设计的硬盘健康监测与分析工具&#xff0c;致力于保障用户的数据安全。这款软件功能强大且操作简便&#xff0c;能够实时检测硬盘的各项指标&#xff0c;帮助用户及时发现并解决潜在问题。 Drive Scope for Mac 1.2.23注册激活版下载 Driv…

图像处理:乘法滤波器(Multiplying Filter)和逆FFT位移

一、乘法滤波器&#xff08;Multiplying Filter&#xff09; 乘法滤波器是一种以像素值为权重的滤波器&#xff0c;它通过将滤波器的权重与图像的像素值相乘&#xff0c;来获得滤波后的像素值。具体地&#xff0c;假设乘法滤波器的权重为h(i,j)&#xff0c;图像的像素值为f(m,…

基于CANoe从零创建以太网诊断工程(2)—— TCP/IP Stack 配置的三种选项

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

经典的目标检测算法有哪些?

一、经典的目标检测算法有哪些&#xff1f; 目标检测算法根据其处理流程可以分为两大类&#xff1a;One-Stage&#xff08;单阶段&#xff09;算法和Two-Stage&#xff08;两阶段&#xff09;算法。以下是一些经典的目标检测算法&#xff1a; 单阶段算法: YOLO (You Only Loo…

前端三大件速成 01 HTML

文章目录 一、前端基础知识二、标签1、什么是标签2、标签的属性3、常用标签&#xff08;1&#xff09;声明&#xff08;2&#xff09;注释&#xff08;3&#xff09;html 根标签&#xff08;3&#xff09;head标签&#xff08;4&#xff09;body标签 三、特殊字符四、其他标签1…