如何排查本地仓库中因换行符差异未同步到远程的文件?
排查本地因换行符差异未同步到远程的文件方法
方法1:直接列出存在换行符问题的文件
使用git diff的--check参数,扫描文件中的换行符不一致、行尾空格等问题,输出对应的文件名:
git diff --name-only --check origin/master master
该命令对比本地master分支与远程origin/master分支,列出所有包含换行符差异的文件。
方法2:批量检查所有已追踪文件
通过git ls-files配合xargs批量扫描所有已追踪文件,处理文件名含空格的场景:
git ls-files -z | xargs -0 git diff --name-only --check origin/master
方法3:统一换行符后识别变化
先将本地文件换行符统一为目标格式,再通过git status找出未同步的文件:
- 安装换行转换工具(如
dos2unix或unix2dos) - 批量转换指定类型文件的换行符(以JS文件为例):
find . -type f -name "*.js" -exec dos2unix {} \; - 执行
git status,显示为modified的文件即为之前因换行符差异未同步的文件。
关键说明
git config core.fileMode false是忽略文件权限变化的配置,和换行符问题无关,因此无法解决你的问题。- 若要从根源避免换行符问题,可配置
core.autocrlf:# Windows环境推荐 git config --global core.autocrlf true # Linux/macOS环境推荐 git config --global core.autocrlf input
内容的提问来源于stack exchange,提问作者Robert Sinclair
相关产品推荐
相关产品推荐

