当前位置: 首页 > article >正文

Git 查看修改记录 二

Git 查看修改记录 二

续接 Git 查看一个文件的修改记录 一

一、修改 A.txt

修改 A.txt

number=6

执行命令

git add .
git commit -a -m "修改 number=6"
# git commit -a -m "修改 number=6" 执行 输出如下
# $ git commit -a -m "修改 number=6"
# [master_2 e84921c] 修改 number=6
#  1 file changed, 1 insertion(+), 1 deletion(-)

git push
二、强制回退到上一个提交

执行命令

# 将 HEAD 指针回退到上一个提交
git reset HEAD~1
# 输出如下
# Unstaged changes after reset:
# M       A.txt

此时 A.txt 状态是修改中
此时 A.txt 的内容就是 number=6
因为 git reset HEAD~1 将 HEAD 回退到了上一个提交,那此时 A.txt 的修改还没有提交

执行命令

# 将 A.txt 的修改丢弃
git checkout .
三、推送到远端

执行命令

$ git push
To github.com:LIQIANGEASTSUN/JenkinsTest.git
 ! [rejected]        master_2 -> master_2 (non-fast-forward)
error: failed to push some refs to 'github.com:LIQIANGEASTSUN/JenkinsTest.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. If you want to integrate the remote changes,
hint: use 'git pull' before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.

push 失败,意思是当前分支落后远端分支,需要先执行 git pull
此时如果执行 git pull 再执行 push 是正确流程

此处展示一个错误的示范
不执行 git pull

$ git push origin master_2 --force
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
To github.com:LIQIANGEASTSUN/JenkinsTest.git
 + e84921c...4b59d0b master_2 -> master_2 (forced update)

强制推送到远端: 由于已经重置了本地的提交历史,需要强制推送到远端

四、查看修改记录

执行命令

git log

输出如下

commit 4b59d0be1c4530355f19f34a1c85dc68b0192e37 (HEAD -> master_2, origin/master_2)
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:41:56 2025 +0800

    修改number=5

commit 020a6d24b731791f0729667b2c8788cedd04a5a4
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:41:30 2025 +0800

    修改number=4

commit 347414f7c14876a8fcd58f57b3b76866c7c55e0d
commit 4b59d0be1c4530355f19f34a1c85dc68b0192e37 (HEAD -> master_2, origin/master_2)
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:41:56 2025 +0800

    修改number=5

commit 020a6d24b731791f0729667b2c8788cedd04a5a4
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:41:30 2025 +0800

    修改number=4

commit 347414f7c14876a8fcd58f57b3b76866c7c55e0d
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:41:02 2025 +0800

    修改number=3

commit ca103f51961e12919c1ce16a83b537cb0c31f7cd
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:40:33 2025 +0800

    修改number=2

commit 075bd5a9b33b2c32b3478dcbab9891bf00124a58
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 10:39:58 2025 +0800

    添加 A.txt 第一次提交

发现之前的提交 “修改 number=6” 找不到了
到 SourceTree上看下
在这里插入图片描述
SourceTree上也没有 “修改 number=6” 的记录

到 TortoiseGit 上看 看log
选中文件 右键 弹窗选择 TortoiseGit -> Show log
在这里插入图片描述
TortoiseGit 上也没有 “修改 number=6” 的记录

执行 git push origin master_2 --force 强制推送,确实是能推送成功,但是它销毁了一些提交记录

五、找提交记录

执行命令

git reflog
# 输出日志如下
4b59d0b (HEAD -> master_2, origin/master_2) HEAD@{0}: reset: moving to HEAD~1
e84921c HEAD@{1}: commit: 修改 number=6
4b59d0b (HEAD -> master_2, origin/master_2) HEAD@{2}: commit: 修改number=5
020a6d2 HEAD@{3}: commit: 修改number=4
347414f HEAD@{4}: commit: 修改number=3
ca103f5 HEAD@{5}: commit: 修改number=2
075bd5a HEAD@{6}: commit: 添加 A.txt 第一次提交

可以看到 e84921c HEAD@{1}: commit: 修改 number=6 其中 e84921c 就是这个提交的 Hash
还可以看到 之后又执行了一次 reset: moving to HEAD~1

执行命令

$ git show e84921c
commit e84921caa1808b6b1ad9bc9d98ef57d6402399b6
Author: liqiang <liqiangeastsun@163.com>
Date:   Fri Feb 14 12:25:55 2025 +0800

    修改 number=6

diff --git a/A.txt b/A.txt
index 14551e5..2e2054b 100644
--- a/A.txt
+++ b/A.txt
@@ -1,3 +1,3 @@


-number = 5
\ No newline at end of file
+number = 6
\ No newline at end of file

从日志可以看到这条提交的完整 commit e84921caa1808b6b1ad9bc9d98ef57d6402399b6
这条提交修改了 A.txt
将 number 从 number = 5 修改为 number = 6

如果想恢复 这条提交 请看 Git 回滚 checkout、reset、revert


http://www.kler.cn/a/546592.html

相关文章:

  • 《安富莱嵌入式周报》第350期:Google开源Pebble智能手表,开源模块化机器人平台,开源万用表,支持10GHz HRTIM的单片机,开源CNC控制器
  • 京东 旋转验证码 分析
  • 网络安全事件分级
  • 通过 VBA 在 Excel 中自动提取拼音首字母
  • 微软AutoGen高级功能——Swarm
  • 大语言模型评价 怎么实现去偏见处理
  • 47 AVL树的实现
  • 网络安全学习记录
  • 实践记录-NAS入手前后的记录-关于设备选型的练习
  • leetcode 2915. 和为目标值的最长子序列的长度
  • AIGC与AICG的区别解析
  • 阿里云IOT消息处理
  • AWS上基于高德API验证Amazon Redshift里国内地址数据正确性的设计方案
  • wx060基于springboot+vue+uniapp的宿舍报修系统小程序
  • SSM开发(十二) mybatis的动态SQL
  • Docker 实战与应用:提升开发效率的核心命令与场景解析
  • 算法刷题-数组系列-卡码网.区间和
  • 第P9周-Pytorch实现YOLOv5-Backbone模块
  • 基于 openEuler 构建 LVS-DR 群集(同网段)。
  • mariadb数据库的安装与部署