git reflog 和 git log 的详解和区别

在这里插入图片描述

文章目录

      • 1. `git log` 介绍
        • 基本用法:
        • 输出内容:
        • 常见选项:
        • `git log` 的局限性:
      • 2. `git reflog` 介绍
        • 基本用法:
        • 输出内容:
        • `git reflog` 输出字段:
        • 常见选项:
        • 主要用途:
        • 示例:
      • 3. `git reflog` 和 `git log` 的主要区别
        • 1. 作用范围不同:
        • 2. 用途不同:
        • 3. 持久性不同:
        • 4. 信息量不同:
      • 4. `git reflog` 和 `git log` 的结合使用
        • 示例:
      • 总结

git refloggit log 是 Git 中两个用于查看提交历史的命令,但它们有不同的作用和用途。下面详细解释这两个命令的区别以及它们各自的功能。

1. git log 介绍

git log 是 Git 中最常用的命令之一,用于查看 Git 仓库的提交历史记录。它会显示一系列与项目历史相关的提交对象(commit),包括提交的哈希值、作者信息、日期和提交消息等。默认情况下,git log 仅显示当前分支的提交历史记录。

基本用法:
git log
输出内容:
  • 提交哈希值 (commit hash): 每次提交对应一个唯一的 SHA-1 哈希值(例如:abc1234),可以用它来标识提交。
  • 提交作者 (Author): 提交代码的人。
  • 提交时间 (Date): 提交发生的时间。
  • 提交信息 (Message): 提交时的说明信息。
常见选项:
  • git log --oneline:以单行形式显示每个提交(只显示提交哈希的前几位和提交信息)。
  • git log --graph:图形化显示提交历史及分支、合并历史。
  • git log --since="2 weeks ago":查看自指定时间以来的提交。
  • git log --author="author name":查看特定作者的提交。
git log 的局限性:
  • 它只会显示提交历史中 可达的提交(reachable commits),即那些还与当前分支相关的提交记录。
  • 如果一个提交被 “丢弃”(比如被 git resetgit rebase 重写了历史,或者分支被删除),这些提交记录将不会出现在 git log 中。

2. git reflog 介绍

git reflog 的作用是记录 本地仓库 中的每一次 “引用”(reference)的变化,包括 HEAD、分支或其他引用的移动。即使某些提交在 git log 中不可见,git reflog 也能跟踪到它们。这使得 git reflog 成为一个强大的工具,特别是在需要恢复被重置的提交、恢复误删的分支或者解决其他复杂历史问题时。

基本用法:
git reflog
输出内容:

git reflog 会显示 HEAD 的历史变更记录。每当你执行了影响 HEAD 的操作,如提交(git commit)、重置(git reset)、检出分支(git checkout)、合并(git merge)、拉取(git pull)等,都会记录在 reflog 中。

git reflog 输出字段:
  • HEAD reference: 每个记录前面的数字是从最近到最远的 HEAD 移动记录的编号,如 HEAD@{0} 表示当前 HEAD 的位置,HEAD@{1} 是 HEAD 上一个位置。
  • 提交哈希值: 与 git log 一样,reflog 记录也包含提交的哈希值。
  • 操作记录: Reflog 会记录所有对 HEAD 的操作,显示出操作类型及其简要信息,比如 commit: updated some filesreset: moving to HEAD~1
常见选项:
  • git reflog show <branch>:查看特定分支的引用日志。
  • git reflog expire --expire=now --all:清除过期的引用日志。
  • git reflog delete:手动删除引用日志中的某些记录。
主要用途:
  • 恢复丢失的提交:如果你用 git reset --hard 移动了 HEAD 并丢失了一些提交,可以通过 git reflog 找到旧的提交哈希值并使用 git resetgit checkout 将它恢复。
  • 恢复误删除的分支:当分支被误删除时,reflog 可以帮助你找到分支的最后一次提交,从而恢复该分支。
  • 查找被 rebasemerge 覆盖的提交git reflog 仍然会跟踪到被变基或合并覆盖的历史记录。
示例:

假设你误用了 git reset --hard 并丢失了一些提交。可以通过以下步骤恢复丢失的提交:

git reflog

找到你想恢复的提交哈希(例如 abc1234),然后使用:

git reset --hard abc1234

3. git refloggit log 的主要区别

1. 作用范围不同:
  • git log 只显示提交历史,它反映了当前分支的提交链条上所有 可达的提交,但不记录对 HEAD 或其他引用的移动。
  • git reflog 不仅显示提交历史,还记录了所有对分支引用(HEAD、refs、branches)的改变,包括那些已丢失或不可见的提交
2. 用途不同:
  • git log 用于查看 项目的提交历史,帮助你理解项目如何演变。
  • git reflog 用于 恢复误操作、调试复杂的提交问题,比如查找丢失的提交、分支或者撤销误操作。
3. 持久性不同:
  • git log 显示的提交历史是持久的,只要提交对象没有被垃圾回收(git gc)或删除,它们就会一直存在。
  • git reflog 是临时的,reflog 记录会在默认情况下保存 90 天,然后会被清理掉(可以通过配置更改这个时间)。
4. 信息量不同:
  • git log 的信息量更集中于提交,主要显示提交信息。
  • git reflog 记录了对 HEAD 位置的所有操作,所以它的信息量更多,包括每次检出、提交、重置、变基等操作的历史。

4. git refloggit log 的结合使用

git loggit reflog 可以配合使用。比如,如果你想通过 reflog 找回一个丢失的提交,可以先用 git reflog 找到相应的提交哈希值,再用 git log 来确认该提交的详细信息。

示例:

假如你想查找并恢复一个被 reset 掉的提交,你可以:

git reflog
# 查找到提交的哈希值,假设是 abc1234
git log abc1234
# 查看该提交的详细信息,确认后恢复该提交
git reset --hard abc1234

总结

  • git log 用于查看分支的提交历史,适合了解项目的历史变化情况,显示所有可达的提交。
  • git reflog 记录本地仓库中所有对 HEAD 的引用变更,适合在复杂操作失误或分支历史混乱时进行恢复与调试,能够追踪到即使已经丢失的提交。

两者各有用途,在 Git 日常使用中,git log 适合做提交历史查看,而 git reflog 则是不可或缺的“后悔药”。


结束语
Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

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

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

相关文章

想高效开发?从文件系统开始着手。。。

4G-Cat.1模组的文件系统关系着数据传输速度、存储效率&#xff0c;以及数据安全性等等诸多因素&#xff0c;在应用开发中是非常重要的。今天我们继续学习Air201的实用示例——文件系统的使用。 Air201文件系统的使用 合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音…

密集行人数据集 CrowdHumanvoc和yolo两种格式,yolo可以直接使用train val test已经划分好有yolov8训练200轮模型

密集行人数据集 CrowdHuman voc和yolo两种格式&#xff0c;yolo可以直接使用 train val test已经划分好 有yolov8训练200轮模型。 CrowdHuman 密集行人检测数据集 数据集描述 CrowdHuman数据集是一个专为密集行人检测设计的数据集&#xff0c;旨在解决行人密集场景下的检测挑…

英伟达:AI时代的领跑者,引领智能计算的未来@附149页PDF文件下载

在人工智能的浪潮中&#xff0c;英伟达&#xff08;NVIDIA&#xff09;以其卓越的GPU技术&#xff0c;成为了这个时代的领跑者。从游戏显卡的霸主到AI计算的领导者&#xff0c;英伟达的转型之路充满了创新与突破。今天&#xff0c;我们将深入探讨2024年英伟达如何通过其战略布局…

RockTrack:A 3D Robust Multi-Camera-Ken Multi-Object Tracking Framework

RockTrack: A 3D Robust Multi-Camera-Ken Multi-Object Tracking Framework 基础信息 单位&#xff1a;哈尔滨理工大学论文&#xff1a;https://arxiv.org/pdf/2409.11749代码&#xff1a;https://github.com/lixiaoyu2000/Rock-Track (未全部放出)数据集&#xff1a;nuScen…

U-Boot的基本使用

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 在上一篇中我们学习了如何进行 I.MX6U 的裸机开发&#xff0c;通过 21 个裸机例程我们掌握了I.MX6U 的常用外设。通过裸机的学习我们掌握了外设的底层原理&#xff0c;这样在以后进行 Linux 驱动开发的时候就只需要将精…

典型的MVC设计模式:使用JSP和JavaBean相结合的方式来动态生成网页内容典型的MVC设计模式

先看代码与实现&#xff1a; 文件结构 triangle_area4.jsp <% page contentType"text/html;charsetUTF-8" pageEncoding"UTF-8" %> <html> <body> <%--<jsp:useBean>&#xff1a;用于在JSP中实例化JavaBean。在这里&#xff0c…

校医务室健康服务系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;用户管理&#xff0c;医生管理&#xff0c;医患交流管理&#xff0c;预约医生管理&#xff0c;健康打卡管理&#xff0c;运动打卡管理&#xff0c;饮食打卡管理 微信端账号功能包括&#xff1a;系统首…

OpenAI o1模型背后的技术解析 | 后训练阶段的缩放法则与推理优化

引言 随着人工智能技术的迅速发展&#xff0c;大模型的能力提升成为各大研究机构的重点。2024年9月13日&#xff0c;OpenAI发布了o1系列模型&#xff0c;在数学、代码生成、长程规划等领域取得了显著提升。这些进展并非简单依靠大模型的参数扩展&#xff0c;而是基于强化学习以…

[Meachines] [Medium] Jeeves Jenkins-RCE+KeePass-Crack+Pass-the-Hash+(NTFS)ADS攻击

信息收集 IP AddressOpening Ports10.10.10.63TCP:80,135,445,50000 $ nmap -p- 10.10.10.63 --min-rate 1000 -sC -sV -Pn PORT STATE SERVICE VERSION 80/tcp open http Microsoft IIS httpd 10.0 | http-methods: |_ Potentially risky methods:…

C++--C++11

1. C11简介 在2003年C标准委员会曾经提交了一份技术勘误表(简称TC1)&#xff0c;使得C03这个名字已经取代了 C98称为C11之前的最新C标准名称。不过由于C03(TC1)主要是对C98标准中的漏洞 进行修复&#xff0c;语言的核心部分则没有改动&#xff0c;因此人们习惯性的把两个标准合…

口哨声、歌声、boing声和biotwang声:用AI识别鲸鱼叫声

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

fo-dicom开源库是如何满足 DICOM标准的基本要求

前言 前一篇文章&#xff0c;我们介绍了fo-dicom是一个怎样的开源库&#xff1a;fo-dicom&#xff0c;第一个基于.NET Standard 2.0 开发的DICOM开源库&#xff0c;在学会使用fo-dicom进行DICOM数据处理之前&#xff0c;需要先了解几个非常重要的概念&#xff1a; DICOM基本概…

用Qt 对接‌百度AI平台

很多同学想利用几大模型AI弄点东西&#xff0c;但又不知道如何去介入&#xff1f;&#xff1f;最近帮同学弄点东西&#xff0c;刚好要接入到AI平台&#xff0c;就顺便研究了一下&#xff0c;并记录下来。 首先我们选择的 AI模型是百度的&#xff0c;然后注册&#xff0c;申请密…

HX711电子秤模块详解(STM32)

目录 一、介绍 二、传感器原理 1.原理图 2.引脚描述 3.工作原理介绍 三、程序设计 main.c文件 hx711.h文件 hx711.c文件 四、实验效果 五、资料获取 项目分享 一、介绍 HX711是一种高精度、低成本的压力传感器信号放大器&#xff0c;主要用于测量重力或压力变化。…

Allow anonymous access to my Azure OpenAI chat bot

题意&#xff1a;允许匿名访问我的 Azure OpenAI 聊天机器人 问题背景&#xff1a; I have an Azure OpenAI chat bot using my own data (I configured an OpenAI resource and chose Deploy as Web App) . Members of my domain can access it by logging in. Now I want it…

数据库基础知识---------------------------(3)

MYSQL的索引 用于快速找出在某个列中有一特定值的行&#xff0c;不使用索引&#xff0c;MySQL必须从第一条记录开始读完整个表&#xff0c;直到找出相关的行。按实现方式分为Hash索引和BTree索引 单列索引 普通索引 允许在定义索引的列中插入重复值和空值唯一索引 索引列的值必…

从黎巴嫩电子通信设备爆炸看如何防范网络电子袭击

引言&#xff1a; 在当今数字化时代&#xff0c;电子通信设备已成为我们日常生活中不可或缺的一部分。然而&#xff0c;近期黎巴嫩发生的电子设备爆炸事件提醒我们&#xff0c;这些设备也可能成为危险的武器。本文将深入探讨电子袭击的原理、防范措施&#xff0c;以及网络智能…

LangChain-Chatchat本地部署(非docker)-亲测有效全网最新

文章目录 1.相关参数2.下载安装xinference推理框架3.启动xinference下载GLM模型和模型编码器4.模型和编码器下载完成后进行检查5.创建新的虚拟环境chatchat6.将LangChain-chatchat项目拉到本地7.下载langchain-chatchat的包清华源镜像8.创建一个chatchat配置文件存储路径9.查看…

【第33章】Spring Cloud之SkyWalking服务链路追踪

文章目录 前言一、介绍1. 架构图2. SkyWalking APM 二、服务端和控制台1. 下载2. 解压3. 初始化数据库4. 增加驱动5. 修改后端配置6. 启动7. 访问控制台8. 数据库表 三、客户端1. 下载2. 设置java代理3. idea配置3.1 环境变量3.2 JVM参数3.3 启动日志 4. 启用网关插件 四、链路…

传送带异物破损裂缝检测数据集 2300张 带标注voc yolo

传送带异物破损裂缝检测数据集 2300张 带标注voc yolo 2 传送带异物破损裂缝检测数据集 数据集描述 该数据集旨在用于传送带上的异物、破损、裂缝等缺陷的检测任务。数据集包含大量的图像及其对应的标注信息&#xff0c;可用于训练计算机视觉模型&#xff0c;以识别和定位传…