跳到内容
观澜涉川 · 札记EN

使用 Git diff 获取细粒度的代码变更

· 约 1 分钟阅读

通过 git diff 可以得到当前工作区的代码与代码库中的代码的差异。在一些自动化的任务中,可能期望有更细粒度的差异输出。比如,过滤不同类型的变更文件,过滤不同类型的变更行。

过滤不同类型的变更文件

git diff 提供了 --diff-filter 选项。可以过滤不同类型的变更文件,比如增加(A)、复制(C)、删除(D)、修改(M)、重命名(R)等。具体可见 git-diff-files 的文档。

过滤不同类型的变更行

遗憾的是,Git 并没有提供根据类型过滤变更行的选项。此时就得结合其他工具完成。

比如,提取那些被删除或者被修改的行:

Terminal window
git --no-pager diff --unified=0 data/ | grep "^-[^-]"