如何查看所有含残留冲突标记文件的diff内容?
解决方案
git diff --check的输出是文件名:行号: 冲突描述格式,直接用整行内容调用git diff会因为包含行号而报错,得先提取纯文件名部分,下面分环境给出可行命令:
Windows PowerShell 环境
修正你原来的思路,用正则剥离行号部分:
git diff --check | ForEach-Object { git diff $($_ -replace ':.*', '') }
-replace ':.*', ''会移除每行第一个冒号及之后的所有内容,只保留文件名。
Linux/macOS bash/zsh 环境
用awk分割行内容提取文件名:
git diff --check | awk -F: '{print $1}' | xargs git diff
如果文件因多处冲突被重复列出,可加uniq去重后逐个处理:
git diff --check | awk -F: '{print $1}' | uniq | while read file; do git diff "$file"; done
聚焦冲突片段的优化
如果只想看和冲突标记相关的diff内容,可以过滤出标记前后的代码:
# bash/zsh git diff --check | awk -F: '{print $1}' | uniq | xargs git diff | grep -A5 -B5 '<<<<<<<\|=======\|>>>>>>>'
# PowerShell git diff --check | ForEach-Object { $file = $_ -replace ':.*', ''; git diff $file | Select-String -Pattern '<<<<<<<|=======\|>>>>>>>' -Context 5 }
-A5和-B5表示显示匹配行后5行和前5行,可根据需要调整数字。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

