git展示merge的详细信息,正常显示中文文件名

git展示merge的详细信息,正常显示中文文件名

问题

在执行pull或者merge操作时,刚刚执行完的时候,我们能看到较为详细的改动信息,比如下面这样子:

PS D:\GitHub\Algorithm> git pull origin main
From https://github.com/GoldenStain/Algorithm
 * branch            main       -> FETCH_HEAD
Merge made by the 'ort' strategy.
 README.md                                                      |  5 +++++
 ...e 55. \350\267\263\350\267\203\346\270\270\346\210\217.cpp" | 10 ++++++++++
 2 files changed, 15 insertions(+)
 create mode 100644 "leetcode 55. \350\267\263\350\267\203\346\270\270\346\210\217.cpp"

但是如果我们后续用git log命令再次尝试查看,就只能看到简单的一行merge信息。
由此,引出我们的需求:
怎么在后续查看时,看到类似的详细改动?

解决方法

该方法来自deepseek生成的回复,已验证。
其中还包含了正确显示中文文件名的方法。

如何重新查看合并时的「文件变更摘要」?

方法 1:使用 git show 查看合并提交的详细信息

直接查看合并提交的完整信息,包括文件变动列表

git show <merge-commit-hash>

这会显示:

  1. 提交元信息(作者、时间、提交说明)。
  2. 合并的文件变更摘要(新增/修改的文件列表,类似你执行 git pull 时看到的内容)。
  3. 具体的代码差异(可通过 --stat 仅显示摘要)。

操作示例:

  1. 找到合并提交的哈希值:

    git log --oneline --graph
    

    输出示例:

    *   2a3b4c5 (HEAD -> main) Merge branch 'main' of https://github.com/GoldenStain/Algorithm
    |\  
    | * 6d7e8f9 Update README
    * | 1a2b3c4 Add leetcode 55
    

    这里 2a3b4c5 是合并提交的哈希。

  2. 查看合并提交的详细信息:

    git show 2a3b4c5 --stat
    

    输出示例:

    commit 2a3b4c5...
    Merge: 1a2b3c4 6d7e8f9
    Author: Your Name <your@email.com>
    Date:   ...
    
    Merge branch 'main' of https://github.com/GoldenStain/Algorithm
    
    README.md                                                      | 5 +++++
    "leetcode 55. \350\267\263\350\267\203\346\270\270\346\210\217.cpp" | 10 ++++++++++
    2 files changed, 15 insertions(+)
    

方法 2:配置 git log 显示文件变更摘要

git log 中直接显示文件变动统计:

git log --stat -1 <merge-commit-hash>
  • --stat: 显示文件变更统计。
  • -1: 仅显示最近 1 条提交。

方法 3:查看合并时的完整操作日志

Git 会记录所有操作的原始输出(如合并时的详细信息),可以通过 git reflog 找到合并操作的位置,然后查看原始输出:

# 1. 查看操作历史
git reflog

# 2. 找到合并操作的位置(例如 HEAD@{2})
git show HEAD@{2}

文件名中的八进制转义符问题

你看到的文件名 leetcode 55. \350\267\263\350\267\203\346\270\270\346\210\217.cpp 是 Git 对非 ASCII 字符(如中文)的八进制转义表示。要正确显示中文文件名,可以:

  1. 升级 Git 到最新版本(新版本已默认支持 Unicode)。
  2. 配置 Git 禁用转义:
    git config --global core.quotepath off
    

之后执行 git showgit log 时会正常显示中文路径。


总结

场景 命令
查看合并提交的文件摘要 git show <merge-commit> --stat
查看合并提交的完整差异 git show <merge-commit>
在日志中显示文件变动 git log --stat -1 <merge-commit>
修复中文文件名显示问题 git config --global core.quotepath off
posted @ 2025-02-05 16:26  Gold_stein  阅读(25)  评论(0编辑  收藏  举报