GitKraken拉取仓库时gitignore内容重复自动进入WIP状态如何解决
问题产生原因
- 行尾符(CRLF/LF)配置冲突:不同操作系统默认行尾符存在差异(Windows为CRLF、macOS/Linux为LF),如果仓库未统一配置行尾转换规则,用户本地Git或GitKraken的
core.autocrlf配置与仓库中已提交的.gitignore行尾符不匹配时,GitKraken的行尾转换逻辑会触发bug,错误将原有内容识别为待追加的新内容,导致完整重复写入。 - GitKraken内置
.gitignore自动合并功能异常:部分旧版本GitKraken内置了.gitignore规则推荐、模板自动合并功能,开启状态下拉取代码时,会错误将本地默认模板与仓库已有的.gitignore内容合并,未做内容校验去重,直接将原有内容完整追加到文件末尾。 - 本地缓存或文件写入异常:如果本地
.gitignore曾被其他程序锁定,或GitKraken的工作区缓存损坏,拉取时首次写入文件失败后触发重试逻辑,重试时未清空原有文件内容直接追加写入,也会导致内容重复。
彻底预防方案
- 统一仓库行尾规则:在仓库根目录新增
.gitattributes文件,明确指定.gitignore的行尾符规则,示例配置如下:
# 统一.gitignore文件行尾为LF .gitignore text eol=lf # 可根据需要补充其他文本文件的行尾规则 *.txt text eol=lf *.md text eol=lf
将该文件提交到仓库后,所有用户拉取代码时Git会自动统一转换.gitignore的行尾符,从根源避免行尾不匹配导致的写入异常。
- 关闭GitKraken自动修改
.gitignore的功能:打开GitKraken设置(Preferences),进入「Git」选项卡,关闭Automatically suggest adding entries to .gitignore、Automatically merge .gitignore templates等所有主动修改.gitignore的开关,禁止GitKraken擅自编辑该文件。 - 统一开发者本地Git行尾配置:要求Windows用户执行
git config --global core.autocrlf true,macOS/Linux用户执行git config --global core.autocrlf input,确保本地提交、拉取时的行尾转换逻辑与仓库规则一致。 - 升级GitKraken到最新稳定版:该问题属于GitKraken旧版本已知的文件写入bug,最新稳定版已经修复了行尾转换、
.gitignore自动合并的相关异常,升级后可避免该类问题复现。
内容的提问来源于stack exchange,提问作者Jenny Pittman
相关产品推荐
相关产品推荐

