git理解记录

文章目录

    • 1. 背景
    • 2. 基本概念
    • 3. 日常工作流程
    • 4. 其他常见操作
      • 4.1 merge合并操作
      • 4.2 tag打标签操作
      • 4.3 remoute远程操作
      • 4.4 撤销修改

git理解记录

1. 背景

git作为分布式版本控制系统,开源且免费,相比svn集中式版本控制系统存在速度快(HEAD指针指向某次commit实体),离线式(没有网也可以commit),拥有多个完整独立的分支(不同用户本地clone的仓库包含完整记录)。

之前工作都是使用svn进行操作,在使用gitee以及github的时候,需要用到git,将最近学习的知识做一个记录。

2. 基本概念

区域名称描述
工作区(workspace)我们可见的目录,和其他文件夹没什么区别
暂存区(stage/index)实际为 .git/index 文件,用于保存add的文件列表
版本库/仓库(repository)用于管理版本的数据库,对应commit操作,会生成commit、tree实体
远程仓库(origin/remote)服务端的版本库,为专用的git服务器,常见的为gitee、github

在这里插入图片描述

四个区域对应的图示关系如上图,实际上每次commit到仓库中的所有文件,包括-m信息,都会被git转换成一个个实体,它们均存在 .git/objects/xxx中。git为每一个实体创建一个40字符的SHA值进行标识。

git中包含4种类型的实体

  • blob-存储文件内容
  • ​ tree-存储目录结构和文件名
  • ​ commit-存储提交的作者、日期、说明等
  • ​ tag- 存储指向特定提交对象的引用

引用

git中,本地分支branch,远程分支remote branch,标签tag都是指向一个commit实体的指针,它们存在于.git/refs/xx中。

指令对应实体
git add xx改变 .git/index,并生成 blob 实体
git commit -m “xxx”改变.git/HEAD,生成commit,tree实体
git tag -a tags_name -m “xxx”生成.git/refs/tags/tags_name文件,以及tag实体–>实际指向打标签时的comomit实体

3. 日常工作流程

  1. 准备仓库,适用于本地无仓库,需要从git远程仓库获取代码;

    • git clone url;
    • git init 适用于没有参考仓库,全新功能开发时;
  2. 修改代码;

  3. 放入到暂存区;

    • git add xxx
  4. 提交到本地仓库;

    • git commit -m “yyyy”
  5. 推送到远程仓库;

    • 多人开发时,需要先 git pull,更新本地代码,解决本地冲突;
    • git push origin(远程仓库别名) master(本地仓库分支,默认master)
  6. 获取远程库更新;

    • git pull [remote] [branch]

4. 其他常见操作

4.1 merge合并操作

大型项目开发中,会存在多个子功能分支,开发完成后,需要合并到主开发分支。

git checkout branche1
git merge branch2
# 存在冲突,需要进行手动解决

4.2 tag打标签操作

项目开发中,某个关键功能实现,为了后续功能不会影响此功能,可以打一个标签,方便后续进行版本控制,找到之前的关键好的功能。

git tag -a tags_name -m "xxx"

4.3 remoute远程操作

本地仓库代码需要提交到服务端,方便多人开发。

git remoute add [remoute_alias] [url]
git pull [remoute_alias] [branch]
git push [remoute_alias] [branch]

4.4 撤销修改

  • add 没有 coommit的修改

  • 工作区/暂存区回退

    # 使用HEAD引用指向的commit实体内容恢复暂存区
    git reset HEAD <file]>
    # 将工作区和暂存区的状态重置为 HEAD 所指向的最新提交的状态
    git reset ——hard HEAD <file>
    
  • commit的回退

    • 撤销一个提交,原理是使用原提交的逆向操作来完成

      git revert [commit-sha]
      
  • push的回退

    • 同commit,需要重新push即可
标题 \ 指令checkoutresetrevert
主要作用(撤销)撤销工作区、暂存区未提交修改回退版本,重置工作区、暂存区撤销某一次提交
撤销工作区git checkout [file]git reset HEAD [file]
撤销工作区、暂存区git checkout HEAD [file]git reset --hard HEAD [file]
回退版本git reset --hard [commit]
安全性只针对未提交修改,安全如回退了已push提交,不安全安全

(Git入门图文教程(1.5W字40图)🔥🔥–深入浅出、图文并茂 - 安木夕 - 博客园)

(Git基本介绍(三大分区及核心内部构造) - 风来与你安 - 博客园)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【连续学习之LwM算法】2019年CVPR顶会论文:Learning without memorizing

1 介绍 年份&#xff1a;2019 期刊&#xff1a; 2019CVPR 引用量&#xff1a;611 Dhar P, Singh R V, Peng K C, et al. Learning without memorizing[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 5138-5146. 本文提…

使用Paddledetection进行模型训练【Part1:环境配置】

目录 写作目的 安装文档 环境要求 版本依赖关系 安装说明 写作目的 方便大家进行模型训练前的环境配置。 安装文档 环境要求 PaddlePaddle &#xff1e;&#xff1d;2.3.2OS 64位操作系统Python 3(3.5.1/3.6/3.7/3.8/3.9/3.10)&#xff0c;64位版本pip/pip3(9.0.1)&am…

【51单片机-零基础chapter1】

安装软件(配套的有,不多赘述) 1.管理员身份运行keil和破解软件kegen 将CID代码复制粘贴到 一定要管理员方式,不然会error 插入板子 我的电脑,管理 1.如果是拯救者,查看端口,如果没有则显示隐藏 2.苹果不知道,好像不可以 3.其他电脑在"其他设备找" (注:本人在校已…

现代密码学期末重点(备考ing)

现代密码学期末重点&#xff0c;个人备考笔记哦 密码学概念四种密码学攻击方法什么是公钥密码&#xff1f;什么是对称密码&#xff1f;什么是无条件密码&#xff1f; 中国剩余定理&#xff08;必考&#xff09;什么是原根什么是阶 经典密码学密码体制什么是列置换&#xff1f; …

xinput1_3.dll丢失的解决之道:简单易懂的几种xinput1_3.dll操作方法

在计算机系统和游戏领域中&#xff0c;xinput1_3.dll是一个备受关注的动态链接库文件。它在游戏输入设备的支持和交互方面发挥着至关重要的作用。接下来&#xff0c;我们将详细探讨xinput1_3.dll的各种属性。 一、xinput1_3.dll文件的常规属性介绍 xinput1_3.dll文件名 xinpu…

2025-01-06 Unity 使用 Tip2 —— Windows、Android、WebGL 打包记录

文章目录 1 Windows2 Android2.1 横版 / 竖版游戏2.2 API 最低版本2.3 目标帧率2.3.1 targetFrameRate2.3.2 vSyncCount2.3.3 Unity 默认设置以及推荐设置2.3.4 Unity 帧率托管 3 WebGL3.1 平台限制3.2 打包报错记录 13.3 打包报错记录 2 ​ 最近尝试将写的小游戏打包&#xff…

Deep blind super-resolution for hyperspectral images_译文

关键词&#xff1a; 高光谱图像 盲超分辨率 退化模型 深度学习 摘要 目前单张高光谱图像超分辨率的深度学习方法都是非盲方法&#xff0c;采用简单的双三次退化模型。这些模型泛化性能较差&#xff0c;无法处理未知的退化。此外&#xff0c;RGB图像的盲超分辨率方法忽略了高光…

Visual studio code编写简单记事本exe笔记

安装扩展cmake tools c/c c/c Extension pack CMakeLists.txt cmake_minimum_required(VERSION 3.20) project(NotepadApp)set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON)# Windows specific settings if(WIN32)set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)s…

Java100道面试题

1.JVM内存结构 1. 方法区&#xff08;Method Area&#xff09; 方法区是JVM内存结构的一部分&#xff0c;用于存放类的相关信息&#xff0c;包括&#xff1a; 类的结构&#xff08;字段、方法、常量池等&#xff09;。字段和方法的描述&#xff0c;如名称、类型、访问修饰符…

【数电尾灯设计】2022-8-16

缘由数电尾灯设计问题&#xff0c;求解答--CSDN问答 从题目可以列出 000 100 010 111-----------4进制 000 100 010 110 001 101 011 111-----------8进制 由列出可知用16进制芯片的3个引脚可以获得8进制推导出4进制从而可用逻辑处理为4进制实现尾灯功能。之上第一步实现了尾灯…

安卓14无法安装应用解决历程

客户手机基本情况&#xff1a; 安卓14&#xff0c;对应的 targetSdkVersion 34 前天遇到了安卓14适配问题&#xff0c;客户发来的截图是这样的 描述&#xff1a;无法安装我们公司的B应用。 型号&#xff1a;三星google美版 解决步骤&#xff1a; 1、寻找其他安卓14手机测试…

【WRF数据准备】ECMWF 49r1: Soil Variables的变化及WRF模型修正

目录 ECMWF 49r1: Change in soil variablesECMWF 49r1更新的背景土壤变量的主要变化对WRF使用者的影响Github中描述ERA5 Vtable 下载另:原始 IFS 数据-ECMWF 服务器参考2024年12月12日,ECMWF 发布了 49r1 版本的业务 IFS。ECMWF在其49r1循环版本中对土壤变量进行了重要更新。…

一机多实例:如何在一台机器上高效运行多个 MySQL 服务

前言 在实际开发和测试环境中&#xff0c;我们经常需要运行多个 MySQL 实例来模拟不同的数据库环境。例如&#xff0c;在一台服务器上运行多个数据库服务以节约硬件资源&#xff0c;或者同时运行不同版本的 MySQL 进行功能兼容性测试。MySQL 本身支持通过配置多实例运行&#…

源代码编译安装X11及相关库、vim,配置vim(1)

一、目录结构 如下。 所有X11及相关库装到mybuild&#xff0c;源代码下载到src下&#xff0c;解压&#xff0c;进入&#xff0c;编译安装。编译时指定--prefix到相同的目录&#xff0c;即上图中mybuild。 ./configure --prefixpwd/../../mybuild [CFLAGS"-I/path/to/X11…

5. CSS引入方式

5.1 CSS的三种样式 按照 CSS 样式书写的位置(或者引入的方式)&#xff0c;CSS样式表可以分为三大类&#xff1a; 1.行内样式表&#xff08;行内式&#xff09; 2.内部样式表&#xff08;嵌入式&#xff09; 3. 外部样式表&#xff08;链接式&#xff09; 5.2 内部样式表 …

【C++】构造函数与析构函数

写在前面 构造函数与析构函数都是属于类的默认成员函数&#xff01; 默认成员函数是程序猿不显示声明定义&#xff0c;编译器会中生成。 构造函数和析构函数的知识需要建立在有初步类与对象的基础之上的&#xff0c;关于类与对象不才在前面笔记中有详细的介绍&#xff1a;点我…

WPF区域导航+导航参数使用+路由守卫+导航日志

背景&#xff1a;使用ContentControl控件实现区域导航是有Mvvm框架的WPF都能使用的&#xff0c;不限于Prism 主要是将ContenControl控件的Content内容在ViewModel中切换成不同的用户控件 下面是MainViewModel&#xff1a; private object body;public object Body {get { retu…

Unity中 Xlua使用整理(一)

1.安装: 从GitHub上下载Xlua源码 Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. (github.com) 下载Xlua压缩包&#xff0c;并解压将Aseet文件夹中的Xlua和Plugins文件夹复制到Unit…

Matlab仿真径向受压圆盘光弹图像

Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径&#xff0c;单位&#xff1a;mm h 5; % 圆盘厚度&#xff0c;单位&#xff1a;mm P 300; % 径向受压载荷大小&#xff0c;单位&#xff…

基于Django的学校智能图书馆借书归还订阅管理系统

完整源码项目包获取→点击文章末尾名片&#xff01;