git最常用 git showgit show a15c6cbad7c0b8211444867842558370542468e7 --name-status显示在提交这个版本时有哪些文件发生了修改。commit a15c6cbad7c0b8211444867842558370542468e7(HEAD -main, origin/main)M file.txt M test.txtgit show a15c6cbad7c0b8211444867842558370542468e7 – file.txt显示在提交这个版本时指定文件进行了哪些修改。$gitshow a15c6cbad7c0b8211444867842558370542468e7 -- file.txt commit a15c6cbad7c0b8211444867842558370542468e7(HEAD -main, origin/main)diff--gita/file.txt b/file.txt index 02fd7ac..7fe8e02100644--- a/file.txt b/file.txt -4,4 4,8 userding version:2 userding -2026年7月1日23:57:08\No newline at end offile2026年7月1日23:57:08 version:3 userding 2026年7月2日00:34:40\No newline at end offilegit show 版本号 --stat只看修改了哪些文件不看代码细节那就用这个$gitshow a15c6cbad7c0b8211444867842558370542468e7--statcommit a15c6cbad7c0b8211444867842558370542468e7(HEAD -main, origin/main)file.txt|6- test.txt|8-2files changed,12insertions(),2deletions(-)git show 版本号作用自动对比 这个版本 和 前一个版本直接显示改了哪些文件、加了什么、删了什么如$gitshow a15c6cbad7c0b8211444867842558370542468e7 commit a15c6cbad7c0b8211444867842558370542468e7(HEAD -main, origin/main)diff--gita/file.txt b/file.txt index 02fd7ac..7fe8e02100644--- a/file.txt b/file.txt -4,4 4,8 userding version:2 userding -2026年7月1日23:57:08\No newline at end offile2026年7月1日23:57:08 version:3 userding 2026年7月2日00:34:40\No newline at end offilediff--gita/test.txt b/test.txt index 700ea95..cac4170100644--- a/test.txt b/test.txt -1,3 1,9 test.txt v1: -2026C4EA7D4C22C8D500:15:39\No newline at end offile2026C4EA7D4C22C8D500:15:39 v2 2026C4EA7D4C22C8D500:17:58 v3 2026C4EA7D4C22C8D501:53:33\No newline at end offilegit loggit log -p file 查看文件在哪些版本中具体进行了哪些修改的变更记录$gitlog-pfile.txt commit a15c6cbad7c0b8211444867842558370542468e7(HEAD -main, origin/main)version:32026年7月4日01:17:07diff--gita/file.txt b/file.txt index 02fd7ac..7fe8e02100644--- a/file.txt b/file.txt -4,4 4,8 userding version:2 userding -2026年7月1日23:57:08\No newline at end offile2026年7月1日23:57:08 version:3 userding 2026年7月2日00:34:40\No newline at end offilecommit ab31aee0fe54bfc583de2e53ba9803ff99c032dc v2,2026年7月2日00:16:21diff--gita/file.txt b/file.txt index e013349..02fd7ac100644--- a/file.txt b/file.txt -1,3 1,7 version1 userding -2026年7月1日21:30:19\No newline at end offile2026年7月1日21:30:19 version:2 userding 2026年7月1日23:57:08\No newline at end offilecommit 02f58927dad47ad07c21fd2a4b3b18ba453d1c80 version:1,2026年7月1日21:31:49diff--gita/file.txt b/file.txt newfilemode100644index 0000000..e013349 --- /dev/null b/file.txt -0,0 1,3 version1 userding 2026年7月1日21:30:19\No newline at end offile证明1git checkout c – file 会直接把 c 版本的文件覆盖到工作区 暂存区$gitcheckout ab31aee0fe54bfc583de2e53ba9803ff99c032dc -- file.txt AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(m $gitdiff--cacheddiff--gita/file.txt b/file.txt index 7fe8e02..02fd7ac100644--- a/file.txt b/file.txt -4,8 4,4 userding version:2 userding -2026年7月1日23:57:08 --version:3-userding -2026年7月2日00:34:40\No newline at end offile2026年7月1日23:57:08\No newline at end offile$gitdiffAdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiffHEADdiff--gita/file.txt b/file.txt index 7fe8e02..02fd7ac100644--- a/file.txt b/file.txt -4,8 4,4 userding version:2 userding -2026年7月1日23:57:08 --version:3-userding -2026年7月2日00:34:40\No newline at end offile2026年7月1日23:57:08\No newline at end offile证明步骤初始状态$gitlog--oneline--graph* a15c6cb(HEAD -main, origin/main)version:32026年7月4日01:17:07 * ab31aee v2,2026年7月2日00:16:21 * 02f5892 version:1,2026年7月1日21:31:49工作区版本 a15c6cb暂存区版本 a15c6cb本地仓库所有 提交执行 git checkout ab31aee0fe54bfc583d – file.txt这条命令等价两步从提交 ab31aee 取出文件覆盖工作区file.txt同时把该文件写入暂存区暂存区直接变成 ab31aee 此时工作区ab31aee 暂存区ab31aee HEAD 还在 a15c6cb也可以从指令返回结果中斧正git diff 无输出证明wd和index内容一致。git diff --cached 和 git diff HEAD 有输出且输出一致证明wd和本地仓库最新提交不一致index和本地仓库最新提交不一致。以上证明了git checkout ab31aee0fe54bfc583de2e53ba9803ff99c032dc – file.txt会直接把 commit 版本的文件覆盖到工作区 暂存区。证明2git reset HEAD file # 本地仓库最新提交覆盖暂存区gitstatus On branch main Your branch is up todatewithorigin/main.Changes to be committed:(usegit restore --staged file...to unstage)modified: file.txt AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiffAdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiff--cacheddiff--gita/file.txt b/file.txt index 7fe8e02..02fd7ac100644--- a/file.txt b/file.txt -4,8 4,4 userding version:2 userding -2026年7月1日23:57:08 --version:3-userding -2026年7月2日00:34:40\No newline at end offile2026年7月1日23:57:08\No newline at end offileAdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitreset HEAD file.txt Unstaged changes after reset: M file.txt AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiff--cachedAdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiffdiff--gita/file.txt b/file.txt index 7fe8e02..02fd7ac100644--- a/file.txt b/file.txt -4,8 4,4 userding version:2 userding -2026年7月1日23:57:08 --version:3-userding -2026年7月2日00:34:40\No newline at end offile2026年7月1日23:57:08\No newline at end offileAdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiffHEADdiff--gita/file.txt b/file.txt index 7fe8e02..02fd7ac100644--- a/file.txt b/file.txt -4,8 4,4 userding version:2 userding -2026年7月1日23:57:08 --version:3-userding -2026年7月2日00:34:40\No newline at end offile2026年7月1日23:57:08\No newline at end offile以上实验证明git reset HEAD file # 暂存区回Agit reset HEAD file.txt 之前git diff 无输出。git diff --cached 有输出。git reset HEAD file.txt 之后git diff --cached 无输出。git diff 有输出。reset之后index和Head内容已经一致了。但是wd和index不一致了。证明git reset HEAD file 只是恢复了暂存区的内容。证明3git checkout – file 暂存区覆盖了工作区$gitstatus On branch main Your branch is up todatewithorigin/main.Changes not stagedforcommit:(usegit add file...to update what will be committed)(usegit restore file...to discard changesinworking directory)modified: file.txt no changes added to commit(usegit addand/orgit commit -a)AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitcheckout -- file.txt AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitstatus On branch main Your branch is up todatewithorigin/main.nothing to commit, working tree clean AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)$gitdiffHEAD AdministratorDETOP-20240519Y MINGW64 /d/selfgit/dinglx/testgitcmd/testGitCmd(main)以上实验证明git checkout – file.txt # 暂存区覆盖了工作区git checkout – file.txt之前git status 有输出。git checkout – file.txt 之后git status 无输出。git diff HEAD 无输出。git checkout – file.txt 之后index和wd内容已经一致了。并且wd和HEAD也一样了。总结git checkout 提交ID – file 从仓库取文件同时覆盖暂存区工作区git checkout – file 只从暂存区恢复到工作区不动仓库git reset HEAD file 把暂存区恢复成当前最新提交A不动工作区。补充易混点git checkout c 没有 – file 切换整个仓库到c提交所有文件全部回退到c不要混淆– 的作用区分「提交哈希」和「文件名」防止文件名刚好和commit简写重名导致命令歧义。

相关新闻

最新新闻

ESP32-S2 HMI Dev Kit实战:用LVGL打造低成本人机界面

ESP32-S2 HMI Dev Kit实战:用LVGL打造低成本人机界面

用 ESP32-S2 做 HMI 界面,这块 Dev Kit 值得好好拆一拆 最近我在做一款桌面环境监测面板的原型,手里正好有一块以 ESP32-S2 为核心、专门面向 HMI(人机界面)设计的 Dev Kit。这块板子给我的第一感受是:它不是那种功能堆…

2026/8/28 8:29:49
蓝桥杯算法竞赛:从二分查找、并查集到动态规划的实战模板精讲

蓝桥杯算法竞赛:从二分查找、并查集到动态规划的实战模板精讲

1. 项目概述:一份沉淀了实战经验的“蓝桥杯”基础算法模板库 如果你正在备战蓝桥杯,或者任何需要快速上手基础算法和数据结构的编程竞赛、面试,那你大概率经历过这样的时刻:面对一道题,思路清晰,但下笔&…

2026/8/28 8:29:49
基于视觉识别与温度传感的智能牛排熟度辅助系统

基于视觉识别与温度传感的智能牛排熟度辅助系统

这次我们来看一个“标题不太像技术项目”的项目: Almost no skill required to cook a steak 。翻译过来就是“几乎不需要任何技巧就能煎好一块牛排”。如果把它当作烹饪内容,那确实是一篇厨房教程;但换一个工程视角,这件事完全…

2026/8/28 8:29:49
脉冲响应曲线:从系统辨识到工程应用的完整指南

脉冲响应曲线:从系统辨识到工程应用的完整指南

1. 从“黑箱”到“指纹”:为什么我们需要脉冲响应曲线在工业控制、系统分析乃至信号处理领域,我们常常面对一个“黑箱”——一个我们不了解其内部精确数学结构的系统。比如,一个化学反应釜的温度响应、一个伺服电机的速度跟随特性&#xff0c…

2026/8/28 8:29:49
【TDengine】WebSocket 连接与原生连接的性能和适用场景对比?

【TDengine】WebSocket 连接与原生连接的性能和适用场景对比?

WebSocket 连接与原生连接的性能和适用场景对比?—— 车联网实时轨迹分析系统选型指南 问题原文:“WebSocket 连接与原生连接的性能和适用场景对比?” 解析范围:本文聚焦于 TDengine 3.4.x 社区版 下,WebSocket(通过 taosAdapter)与原生 TCP 连接(直接连 taosd)的协议…

2026/8/28 8:29:49
vxe表格组件 vxe-table 权限控制:通过 permission-code 实现按钮级显隐

vxe表格组件 vxe-table 权限控制:通过 permission-code 实现按钮级显隐

vxe 组件内建了一套简洁的权限控制机制,它不依赖任何第三方库,能让我们灵活地控制组件(如按钮、链接等)的显隐和禁用状态。 这套机制的核心是 permissionMethod 全局配置,它定义了一个统一的权限校验方法。一旦配置好…

2026/8/28 8:24:49