首页 > 解决方案 > 列出文件夹差异的 git 命令是什么

问题描述

是否有一个 git 命令只列出两个分支之间不同的文件夹。我必须创建一个 Powershell 脚本来检测哪些根文件夹已更改以确定要运行的 VSTS 构建。所以我将重新表述这个问题:

我需要能够运行像这样的编程命令

git diff branchA..branchB | some-parser-that-outputs-a-list-of-root-folders

结果应该看起来像

.\codebase1
.\codebase3
.\codebase5

标签: gitpowershell

解决方案


Git 没有这个按钮。我不知道powershell,所以我会给出一个bash答案。逐个列出树(非递归)git ls-tree,. 要从 ls-tree 输出中仅选择文件夹,grep ^04. 要区分这些,区分它们。在 Linux 上它会像

diff -u0 \
        <(git ls-tree branchA | grep ^04) \
        <(git ls-tree branchB | grep ^04)

适当地删除你不想要的细节,但我记得 Windows 在进程替换方面存在问题,所以你需要通过临时文件运行它,除非 powershell 有更好的方法。


推荐阅读