You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SSH克隆Git仓库后文件莫名显示已修改,求正确克隆/检出方法

这种情况我碰到过好多次,大概率是换行符自动转换或者文件权限检测的锅,不用慌,咱们一步步拆解解决:

一、最常见的元凶:换行符格式不统一

Windows系统默认用CRLF(回车+换行),而Linux/macOS用LF(换行)。Git默认会自动在克隆时转换换行符,导致所有文件被标记为“已修改”——其实只是换行符格式变了,你根本没改代码。

修复当前仓库的方法:

  • 先重置仓库,清除错误的修改标记:
    git reset --hard
    
  • 配置当前仓库的换行符规则,禁止自动转换:
    git config core.autocrlf false
    git config core.eol lf  # 推荐统一用LF,跨平台更友好;Windows用户也可以选crlf
    
  • 再重置一次,确保文件格式正确:
    git reset --hard
    
    这时候再跑git status,应该就显示“nothing to commit, working tree clean”了。

全局配置,一劳永逸避免后续仓库出问题:

git config --global core.autocrlf false
git config --global core.eol lf

二、另一个常见原因:文件权限检测

Git默认会跟踪文件的执行权限变化,比如克隆后文件的x权限被自动调整,Git就会误判为文件被修改。

修复当前仓库:

  • 先重置清除标记:
    git reset --hard
    
  • 关闭当前仓库的权限检测:
    git config core.filemode false
    
  • 验证:执行git status,修改标记应该消失了。

全局配置:

git config --global core.filemode false

三、正确的克隆/检出姿势

想要从根源避免这个问题,建议先做好全局配置,再克隆仓库:

  1. 先设置全局Git规则(只需要做一次):
    # 关闭自动换行符转换,统一用LF
    git config --global core.autocrlf false
    git config --global core.eol lf
    # 关闭文件权限检测
    git config --global core.filemode false
    
  2. 然后正常克隆仓库:
    git clone <repo-url>
    
  3. 如果是已经克隆好的仓库,直接用前面的仓库级配置命令修复即可。

极少数情况下,core.safecrlf配置过于严格也会导致类似问题,但上面的方法已经能解决99%的场景了。

内容的提问来源于stack exchange,提问作者KRUSHANU MOHAPATRA

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:07:52