git代码管理(一)

news2024/11/25 4:53:14

目录

  • 介绍
  • 暂存区
  • 安装
  • 创建仓库
  • 提交文件
  • 查看当前是否还有文件未提交
  • 查看提交历史
  • 版本回退
  • 恢复版本回退

介绍

git是一个分布式的代码版本管理工具(区别于集中式管理的svn),分布式的意思是对于同一个项目可以有多个仓库存储,分布在不同的用户或者代码托管平台上(远程仓库),每一个仓库都有自己的一套完整管理系统,包括工作区,暂存区,仓库区,提交到仓库区的代码可以再次提交到远程仓库(Remote)中。

暂存区

暂存区是用来存储修改好的代码,但还未提交到仓库区的一个区域,在工作区中修改完成代码后,可以将代码先提交到暂存区。暂存区有如下作用:

  1. 提供了一个临时存储更改的地方:当你在工作目录中修改了文件后,可以使用git
    add命令将这些修改添加到暂存区。这样做可以把相关修改保存在一个临时区域中,而不会立即将其提交到代码仓库。
  2. 控制提交的内容:通过将修改添加到暂存区,你可以选择性地将不同的文件或变更单独提交。例如,你可以将实现某个特性的代码和修改文档的更新同时添加到暂存区,然后分别进行提交,而不必将这些修改混合在一起。
  3. 检查更改内容:通过将修改添加到暂存区,你可以使用git diff
    –staged命令查看将被提交的更改内容,以确保准备提交的版本是你所期望的。
  4. 回滚修改:如果你对某个文件的修改出现了问题,你可以使用git restore --staged
    命令将该文件从暂存区中移除,以撤销对该文件的修改。

暂存区的存在使得Git具有更强大的版本控制能力,可以更加精细地控制修改的提交,提供了更灵活的工作流程。

安装

这个很简单,按照步骤即可完成安装

创建仓库

使用 git init 命令在本地创建一个包含三个区的完整仓库
在这里插入图片描述

提交文件

新建一个readme.txt文件,我们首先将他提交到缓存区中,使用git add readme.txt中
在这里插入图片描述
接下来可以提交到仓库中,使用git commit -m "readme.txt submit"指令,-m 后是本次提交的注解

查看当前是否还有文件未提交

git status
在这里插入图片描述
刚刚已经提交过了 因此显示没有未提交的
重新修改readme.txt中,此时还未提交到暂存区,显示如下:
在这里插入图片描述
此时可以使用git diff readme.txt来查看修改了哪些
在这里插入图片描述

使用git add readme.txt 加入到暂存区,再次使用git status
在这里插入图片描述
此时git追踪到了readme文件的变化,显示可以再次提交到仓库,但是此时再次使用diff指令却没有变化

在这里插入图片描述

git diff命令通常用于查看未暂存的更改或与最新提交之间的差异。它可以帮助开发人员了解文件的变动情况,包括添加、修改和删除的内容。

使用 git diff --staged指令便可以查看
在这里插入图片描述

git diff --staged命令用于比较暂存区(也称为索引)与最新提交之间的差异。–staged选项与–cached选项是等效的,它们都用于指定比较暂存区与最新提交之间的差异。

查看提交历史

使用git log会显示从近到远的三个提交历史,也可以使用git log -–pretty=oneline 一行显示
在这里插入图片描述

版本回退

我们现在新增一个提交
在这里插入图片描述
现在想要回到上一个版本,该如何操作
使用git reset --hard HEAD^指令
在这里插入图片描述
使用git reset --hard HEAD~

在这里插入图片描述
使用^无法完成回退,使用 ~则可以
HEAD^和HEAD~的区别,可以参考这篇文章https://blog.csdn.net/u012745499/article/details/114212461

git reset 命令有不同的用法,最常见的包括以下几种:
撤销提交(Undo Commit):通过将分支指针移动到之前的提交,你可以撤销最新的提交并将代码回退到上一个状态。常用的选项包括:
git reset HEAD~:将当前分支指向上一个提交,并保留之前的更改作为未暂存的更改。
git reset --hard HEAD~:将当前分支指向上一个提交,并丢弃之前的所有更改。
取消暂存(Unstage):如果你已经使用 git add 将文件添加到暂存区,但想要撤销这些更改,可以使用以下命令:
git reset:将当前分支的 HEAD 移动到上一个提交,同时保留工作目录中的更改。
移动分支指针(Move Branch Pointer):通过将分支指针移动到另一个提交,你可以更新分支的位置,将其指向不同的提交。常用的选项包括:
git reset :将当前分支指向指定的提交,并保留之前的更改作为未暂存的更改。
git reset --hard :将当前分支指向指定的提交,并丢弃之前的所有更改。
需要注意的是,git reset 是一个强大且潜在有风险的命令,它会修改提交历史和分支指针位置。因此,在使用 git reset 前,请确保理解其影响,并确保你的操作不会导致不可逆的数据丢失。

恢复版本回退

此时查看git 历史
在这里插入图片描述
之前的提交已经没有了。如何可以查看刚刚那个版本的提交呢,可以使用git reflog来进行查看

git reflog用于查看本地仓库中的引用日志(reference logs)。引用日志记录了本地仓库中的引用(分支、标签等)的变动历史,包括分支的创建、删除、合并以及提交的移动等操作。它可以帮助你追踪和恢复意外删除或移动的提交、分支或标签。
使用git reflog命令可以列出引用日志的信息,显示了每个引用的操作记录和相应的提交哈希值。
在这里插入图片描述

此时我们可以拿到“版本回退”的提交哈希值,通过使用哈希值便可以恢复了
我们使用git reset --hard fedab1b 便可以恢复了
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器(Windows系统)自建filebrowser网盘服务器超详细教程

需要依赖(工具) 轻量服务器(云服务器)一台 —— 环境Windows Server 2019filebrowser安装包(https://github.com/filebrowser/filebrowser/releases) 下载安装filebrowser 进入链接下载:https:/…

基于OpenSceneGraph的三维模型格式转换(以OBJ为例),并简化、输出纹理图片到指定目录(附完整C++代码和exe)

文章目录 前言一、OpenSceneGraph库1. OSG源码2. 编译教程2. Windows编译完成版 二、osgconv格式转换工具1. osgconv官方说明文档2. osgconv工具调用 三、基于C格式转换,简化OBJ,输出纹理到指定目录1. 项目环境2. 完整代码3. 可执行文件 前言 本文基于O…

记录:移动设备软件开发(Activity的显式启动和隐式启动)

目录 Intent对象简述Intent的作用Intent开启Activtiy显式启动Activity隐式启动Activity Intent对象简述 Android的应用程序包含三种重要组件:Activity、Service、BroadcastReceiver,应用程序采用了一致的方式来启动它们——都是依靠Intent来启动的&…

flv怎么转换成mp4格式?准备3个方法给大家

flv怎么转换成mp4格式?FLV是一种流行的视频文件格式,最初由Adobe公司开发,用于在Web上播放和传输视频内容。FLV格式以其较小的文件大小和较高的压缩比而闻名,并广泛应用于在线视频分享平台、流媒体服务和网络广告等领域。能够提供…

c++图像的边缘检测

图像的边缘检测 cv::Canny 是 OpenCV 中用于进行边缘检测的函数,特别是用于检测图像中的边缘。Canny 边缘检测是一种广泛使用的技术,它能够识别图像中的边缘,这些边缘通常表示对象之间的边界或图像中的显著特征 void cv::Canny(const cv::M…

linux 查看CPU架构是AMD还是ARM

要查看 Linux 系统的 CPU 架构是 AMD 还是 ARM,可以使用以下命令: 使用 lscpu 命令并查找 Architecture 字段: lscpu | grep Architecture如果输出结果中包含 x86_64 或 i686,则表示系统的 CPU 架构是 AMD(或者是 x86…

地球红薯地中秋圆《乡村振兴战略下传统村落文化旅游设计》——世界旅行季许少辉八月新书辉少许

地球红薯地中秋圆《乡村振兴战略下传统村落文化旅游设计》——世界旅行季许少辉八月新书辉少许 地球红薯地中秋圆《乡村振兴战略下传统村落文化旅游设计》——世界旅行季许少辉八月新书辉少许

Python中的用法与常见问题解析

装饰器是Python语言中一种强大且常用的概念。通过装饰器,我们可以在不修改原始函数代码的情况下,给函数添加额外的功能,比如日志记录、性能分析、输入验证等。在本文中,我们将深入探讨Python中装饰器的用法和常见问题,…

接口自动化测试:pytest基础讲解

为什么要做接⼝测试? 只靠前端测试很难确保很⾼的覆盖率。接⼝测试,可以模拟出各种类型的⼊参,包括⼀些在前端模拟不出来的⼊参,还能根据接⼝⽂档的定义,设计出相对完善的⼊参值,在接⼝层保证质量&#xff…

@PostMapping‘ not applicable to type 这个是什么原因

PostMapping’ not applicable to type 这个是什么原因 这个错误的意思是 ‘PostMapping’ 注解没有被正确地应用到一个合适的元素上。在Spring MVC中,PostMapping通常用于注解一个处理HTTP POST请求的方法。 出现这个错误,可能的原因有: …

【STM32】读写内部Flash初步使用

基于stm32f103,作为个人学习记录使用 STM32 芯片内部有一个 FLASH 存储器,它主要用于存储代码,在紧急状态下常常会使用内部 FLASH 存储关键记录; 内部 FLASH 的构成 STM32 的内部 FLASH 包含主存储器、系统存储器以及选项字节区域 大容量…

手机相机系统介绍

目录 一张照片是如何生成的? 相机的成像原理 相机硬件 颜色四要素 相机硬件三大块 模组结构 镜头 镜头光路 镜头常见参数 镜头-FOV&EFL 镜头-焦距 镜头-光圈 图像传感器 图像传感器-像素-底 RGB排布 图像传感器-Pattern & PDAF Sensor CMOS sensor …

Python中的单元测试与代码覆盖率:实践与问题解决

当我们开发软件时,单元测试和代码覆盖率是非常重要的工具。它们可以帮助我们验证代码的正确性,并确保代码的质量和稳定性。在Python中,我们有很多强大的工具和库来进行单元测试和代码覆盖率分析。本文将向你分享在Python中进行单元测试和代码…

C++单例模式各种实现方式,终极版即简单又线程安全,无脑用就完了

📋 前言 🖱 博客主页:在下马农的碎碎念🤗 欢迎关注🔎点赞👍收藏⭐️留言📝✍ 本文由在下马农原创,首发于CSDN📆 首发时间:2023/8/25📅 最近更新时…

学生宿舍管理系统(前端java+后端Vue)实现-含前端与后端程序

界面介绍 登录 ###宿舍管理 ###菜单管理 ###角色管理 ###班级管理

编程每日一练(多语言实现):判断偶数

文章目录 一、实例描述二、技术要点三、代码实现3.1 C 语言实现3.2 Python 语言实现3.3 Java 语言实现 一、实例描述 利用单条件单分支选择语句判断输入的一个整数 是否是偶数。 运行程序,输入一个 整数18, 然后按回车键,将提示该数字是偶数…

性能压力测试的定义及步骤是什么

在今天的数字化时代,软件系统的性能和稳定性对于企业的成功至关重要。为了确保软件在高负载和压力情况下的正常运行,性能压力测试成为了不可或缺的环节。本文将介绍性能压力测试的定义、步骤。 一、性能压力测试的定义和目标 性能压力测试是通过模拟实际…

Spring整合RabbitMQ——生产者

添加依赖坐标,在producer和consumer模块的pom文件中各复制一份。 配置producer的配置文件 配置producer的xml配置文件 编写测试类发送消息

[GXYCTF2019]BabySQli 1

进去就是两个登录框 先试了试adminadmin,然后显示wrong pass 试了下万能密码 1 or 11 查看下页面源代码 放到瑞士军刀解密一下 用fuzz字典跑一下 会发现order被过滤了 所以order用Order来过滤 admin Order by 3-- 得到字段数为3 然后判断一下注入点 判断得到这题…

ESD门禁闸机的用途及优点

ESD门禁闸机是一种专门用于防止静电干扰的门禁设备,其主要用途包括: 防止静电干扰:ESD门禁闸机可以有效地防止静电干扰,保护电子元器件、电路板等敏感设备不受静电破坏。 控制人员进出:ESD门禁闸机可以通过身份验证等…