You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看多目录Git仓库两次提交间的文件与目录变更

多目录Git仓库的目录变更查看正确姿势

需求明确:执行git pull后,对比当前最新提交和上一次提交,找出哪些子目录(比如inventory-dir、order-dir这类)有文件修改。先分析你用的两个命令,再给你更合适的方案:

你的现有命令问题

  • git diff inventory-dir:这个命令是对比当前工作区和暂存区里该目录的差异,不是和上一次提交比。如果pull后你没改动本地文件,这个命令根本出不来内容,不符合你的需求。
  • git log --name-status -2 inventory-dir:它会显示最近2次涉及该目录的提交记录,但这是历史提交的汇总,不是直接对比“pull后的最新提交”和“上一次提交”的差异——如果pull拉了好几个提交,这命令显示的是最近两次,不是你要的前后版本对比。

正确的命令推荐

一次性看所有有变更的目录

要快速知道哪些子目录在上一次提交到当前HEAD之间有修改,直接跑:

git diff HEAD~1 --name-only | cut -d'/' -f1 | uniq

拆解下逻辑:

  1. git diff HEAD~1 --name-only:列出两次提交之间所有修改的文件路径
  2. cut -d'/' -f1:从路径里提取第一个目录名(也就是你关心的子目录)
  3. uniq:去重,得到最终的变更目录列表

查看单个目录的详细变更

如果只盯某个目录,比如inventory-dir,要看具体改了啥,用:

git diff HEAD~1 -- inventory-dir

要是只想看文件状态(新增/修改/删除)和路径,不用看具体内容,加--name-status:

git diff HEAD~1 --name-status -- inventory-dir

处理pull拉取多个提交的情况

如果git pull一次性拉了好几个提交,想对比拉取前的最后一个版本和拉取后的最新版本,可以先打个临时标签标记拉取前的状态:

git tag pre-pull HEAD
git pull
git diff pre-pull HEAD --name-only | cut -d'/' -f1 | uniq

完事之后删掉临时标签就行:git tag -d pre-pull

内容的提问来源于stack exchange,提问作者James Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 13:35:27