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