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

Git忽略含CRLF换行的.git-credentials凭证,如何解决?

Git Credential Store 兼容Windows CRLF换行问题解决方案

问题背景

  • Jenkins流水线动态创建Windows虚拟机,通过HTTPS克隆私有GitHub仓库(IT强制禁用SSH),已配置Git自动转换SSH URL为HTTPS:
    [url "https://github.com/"]
        insteadOf = git@github.com:
    
  • 因不能修改.gitmodules(避免破坏开发人员的SSH访问流程),采用credential.helper=store从明文文件.git-credentials读取凭证(虚拟机任务完成即销毁,无安全风险)。

核心问题

使用Windows命令行echo https://%GIT_TOKEN%@github.com>%UserProfile%\.git-credentials写入凭证时,文件会带有CRLF换行符,导致Git忽略该行并触发手动账号密码输入;改用LF换行符则可正常读取。

可行解决方案

一、配置Git兼容CRLF换行(不推荐)

Git的credential.helper=store默认仅识别LF换行,但可通过修改Git的换行处理配置强制兼容:

# 全局配置,影响所有仓库
git config --global core.autocrlf input

# 或仅针对当前仓库配置
git config core.autocrlf input

注意:该配置会改变Git对所有文本文件的换行转换规则,可能引发其他文件的换行符意外变更,仅在确认无副作用时使用。

二、直接写入LF格式的凭证文件(推荐)

1. PowerShell 命令

利用PowerShell的输出控制直接生成LF换行的文件:

# 写入凭证内容并添加LF换行
Add-Content -Path "$env:USERPROFILE\.git-credentials" -Value "https://$env:GIT_TOKEN@github.com`n" -Encoding ascii

或者分步写入:

# 先写入无换行的凭证内容
"https://$env:GIT_TOKEN@github.com" | Out-File -FilePath "$env:USERPROFILE\.git-credentials" -Encoding ascii -NoNewline
# 手动添加LF换行符
"`n" | Out-File -FilePath "$env:USERPROFILE\.git-credentials" -Encoding ascii -Append -NoNewline

2. CMD 命令

通过set /p避免默认的CRLF换行,配合二进制复制生成LF格式文件:

# 生成临时文件,写入无换行的凭证内容
echo|set /p="https://%GIT_TOKEN%@github.com" > temp.txt
# 添加LF换行符(注意:此处的换行需手动输入LF,或在PowerShell环境下执行该命令)
echo.|set /p="^
" >> temp.txt
# 二进制模式复制到目标文件,避免自动转换换行
copy /b temp.txt %UserProfile%\.git-credentials
# 删除临时文件
del temp.txt

三、将已生成的CRLF文件转换为LF

1. PowerShell 转换命令

# 读取文件内容,替换CRLF为LF后重新写入
(Get-Content "$env:USERPROFILE\.git-credentials" -Raw) -replace "`r`n", "`n" | Set-Content "$env:USERPROFILE\.git-credentials" -Encoding ascii -NoNewline

2. 使用Git自带的dos2unix工具

Git for Windows默认包含dos2unix工具(需确保Git路径已加入系统PATH):

dos2unix %UserProfile%\.git-credentials

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 23:52:03