如何让Windows下Composer克隆私有Git库时忽略全局core.autocrlf配置?
当然可以!你完全不用修改全局的core.autocrlf=true设置,只需要针对这个私有Git依赖单独配置Composer的克隆参数就行,这里有两种靠谱的解决方案:
方法1:在composer.json中配置仓库级Git选项(推荐)
这是长期有效的方案,能确保每次Composer克隆或更新该依赖时,自动应用LF换行符设置。你只需要在repositories数组里对应的私有仓库条目下,添加git-options字段,传入-c core.autocrlf=false参数。
举个实际的配置例子:
原本的私有仓库配置:
{ "repositories": [ { "type": "git", "url": "git@your-private-repo.com:your/package.git" } ] }
修改后(新增git-options字段):
{ "repositories": [ { "type": "git", "url": "git@your-private-repo.com:your/package.git", "git-options": ["-c", "core.autocrlf=false"] } ] }
这样Composer在克隆该仓库时,会执行类似git clone -c core.autocrlf=false <仓库地址>的命令,直接覆盖全局的core.autocrlf设置,强制以LF格式检出文件。
方法2:修改已安装依赖的本地Git配置(临时方案)
如果你已经安装了这个依赖,只是想临时调整换行符设置,可以进入该包的本地目录(比如vendor/your/package),执行以下命令:
git config core.autocrlf false
之后执行git reset --hard重新检出文件,就能切换到LF换行符。不过要注意:下次执行composer update或composer install时,如果Composer重新克隆了该仓库,这个本地配置会被重置,所以这种方法仅适合临时测试。
额外建议:从仓库根源解决(最优)
如果你有权限修改这个私有仓库的代码,推荐在仓库根目录添加一个.gitattributes文件,内容如下:
* text eol=lf
这个文件会告诉Git,不管客户端的autocrlf设置是什么,都强制以LF格式检出文件。这是最根本的解决方案,能让所有克隆该仓库的开发者统一换行符,无需每个人单独配置Composer或Git。
内容的提问来源于stack exchange,提问作者Tyler Clendenin

