Skip to content

git

2026-04-11 08:39:53.988 [info] > git log --format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%D%n%B -z --shortstat --diff-merges=first-parent -n50 --skip=0 --topo-order --decorate=full --stdin [327ms]

2026-04-11 08:39:54.157 [info] > git merge-base lyl_dev origin/lyl_dev [147ms]

2026-04-11 08:41:42.905 [info] > git ls-files --stage -- pnpm-lock.yaml [194ms]

2026-04-11 08:41:43.073 [info] > git cat-file -s 568c29fce4b42ad8d03d94836489efbc54abe2f3 [167ms]

2026-04-11 08:43:48.833 [info] > git ls-files --stage -- pnpm-lock.yaml [240ms]

2026-04-11 08:43:48.986 [info] > git cat-file -s 568c29fce4b42ad8d03d94836489efbc54abe2f3 [151ms]

2026-04-11 08:44:05.711 [info] > git log --format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%D%n%B -z --shortstat --diff-merges=first-parent -n50 --skip=0 --topo-order --decorate=full --stdin [294ms]

2026-04-11 08:44:05.882 [info] > git merge-base lyl_dev origin/lyl_dev [150ms]

2026-04-11 08:44:06.706 [info] > git ls-files --stage -- package.json [174ms]

2026-04-11 08:44:06.707 [info] > git show --textconv :package.json [178ms]

2026-04-11 08:44:06.708 [info] > git ls-tree -l HEAD -- package.json [178ms]

2026-04-11 08:44:06.708 [info] > git show --textconv HEAD:package.json [181ms]

2026-04-11 08:44:06.858 [info] > git cat-file -s 53453d90a04038d6194f203fe1bf9032fa475eec [151ms]

2026-04-11 08:44:07.192 [info] > git check-ignore -v -z --stdin [153ms]

check-ignore

查询文件是否被 Git 忽略,并输出忽略原因

git check-ignore -v -z --stdin
参数全称含义
-v--verbose详细模式:输出哪一个 .gitignore 文件 + 行号 + 规则 + 被忽略文件,是排查忽略问题的关键
-z--null输出用 ** 空字符(NUL)** 分隔结果,而非换行符;解决文件名带空格、换行、特殊字符时的解析错误
--stdin从 ** 标准输入(键盘 / 管道)** 读取要检查的文件路径,而非命令行参数

cat-file

查看 Git 仓库中,某个哈希值对应的底层对象信息

git cat-file -s 53453d90a04038d6194f203fe1bf9032fa475eec
参数全称含义
-s--size只输出对象大小(字节数)
<hash>-Git 对象的 SHA-1 哈希值(必须写全或前几位唯一)

show

git show --textconv HEAD:package.json
部分含义
git show核心命令:显示 Git 对象的内容(提交、文件、标签、树都能看)
--textconv参数:自动转换二进制文件为人类可读文本(图片 / 文档 / 压缩包等),纯文本文件不受影响
HEAD指向最新一次提交(也可以换成 commit 哈希、分支名、标签名)
:固定分隔符:版本号:文件路径
package.json要查看的文件路径
  1. 格式 / 内容控制
  • --name-only 只显示文件名,不显示文件内容
  • --name-status 显示文件名 + 变更状态(新增 / 修改 / 删除)
  • --stat 显示文件变更统计(增删行数)
  • --oneline 精简输出(只留一行摘要)
  1. 差异 / 格式化
  • --pretty=format:"..." 自定义输出格式(适合脚本解析)
  • --no-patch 不显示差异内容,只显示提交信息
  • --text 强制把所有文件当作文本处理
  1. 历史 / 版本相关
  • <commit>:<file> 查看指定版本的指定文件(你现在用的格式)
  • <commit> 直接查看某次提交的完整变更详情(作者、信息、文件差异)
git ls-files --stage -- package.json
部分含义
git ls-files核心命令:列出 Git 追踪的文件 / 暂存区文件信息
--stage关键参数:显示暂存区(stage/index)详细信息(哈希、模式、序号)
--分隔符:明确告诉 Git 后面的是文件名,不是参数(文件名带 - 时必须用)
package.json要查询的具体文件
git log --format=%H%n%aN%n%aE%n%at%n%ct%n%P%n%D%n%B -z --shortstat --diff-merges=first-parent -n50 --skip=0 --topo-order --decorate=full --stdin

merge-base

git merge-base lyl_dev origin/lyl_dev
部分含义
git merge-base核心命令:查找两个(或多个)提交 / 分支的最近共同祖先
lyl_dev第一个分支:本地的 lyl_dev
origin/lyl_dev第二个分支:远程的 lyl_dev(origin 是远程仓库名)
  1. 判断本地和远程分支状态 如果 merge-base = 本地最新提交 → 本地超前远程 如果 merge-base = 远程最新提交 → 本地落后远程 如果 merge-base 比两者都旧 → 本地和远程已分叉(需要拉取 + 合并)

  2. 冲突排查 找两个分支从哪里开始分开,就能定位冲突从哪次提交开始。

  3. git rebase 基础 变基的本质就是:以共同祖先为基准,重新应用提交。

上次更新时间:

最近更新