Git对比文件时如何仅检测缺失内容而不报告移动的代码块
Git忽略行移动、仅显示真实增删的对比方法
适用命令
对比两个未存入Git仓库的独立文件
git diff --no-index --ignore-moved-lines --word-diff=plain 原始文件路径 修改后文件路径
对比仓库中已提交的两个版本
git diff --ignore-moved-lines --word-diff=plain <旧版本commit哈希> <新版本commit哈希>
对比当前工作区未提交修改与最新提交版本
git diff --ignore-moved-lines --word-diff=plain
参数说明
--ignore-moved-lines:忽略内容完全一致的行的位置变动,本案例中AB、CDE、LM仅调整位置,不会被标记为变更--word-diff=plain:开启字符级差异检测,可识别出原EFG行中F字符丢失的行内修改- 若不需要字符级检测,仅需排查整行丢失,删除
--word-diff=plain参数即可,此时会直接标记IJK为整行删除、EFG变为EG为整行修改
效果说明
使用上述命令对比你提供的两份文件,差异结果仅会展示两类真实变更,不会包含AB和CDE的位置变动提示:
- 整行删除:
IJK - 行内修改:
EFG中的F字符被移除,修改后为EG
注意:
--ignore-moved-lines参数要求Git版本≥2.17,版本过低请先升级Git后使用。
内容的提问来源于stack exchange,提问作者Marc Le Bihan
相关产品推荐
相关产品推荐

