我有一个奇怪的git问题。检出其中一个分支(可远程跟踪)后,我立即在该分支中进行了修改和未分段的更改。我已再次克隆存储库以验证问题仍然存在。
我正在使用Windows和gitblit作为Git服务器。
您有什么想法为什么会发生这种情况?
git status的输出如下:
$ git status
# On branch RSD-5393
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: apis.releng/cquery/apis.RSD-4780.cquery
# modified: apis.releng/cquery/apis.RSD-4782.cquery
# modified: apis.releng/cquery/apis.RSD-4786.cquery
# modified: apis.releng/cquery/apis.RSD-4799.cquery
# modified: apis.releng/cquery/apis.RSD-4812.cquery
# modified: apis.releng/cquery/apis.RSD-4815.cquery
# modified: apis.releng/cquery/apis.RSD-4821.cquery
# modified: apis.releng/cquery/apis.RSD-4823.cquery
# modified: apis.releng/cquery/apis.RSD-4826.cquery
# modified: apis.releng/cquery/apis.RSD-4827.cquery
# modified: apis.releng/cquery/apis.RSD-4828.cquery
# modified: apis.releng/cquery/apis.RSD-4829.cquery
# modified: apis.releng/cquery/apis.RSD-4831.cquery
# modified: apis.releng/cquery/apis.RSD-4846.cquery
# modified: apis.releng/cquery/apis.RSD-4861.cquery
# modified: apis.releng/cquery/apis.RSD-4862.cquery
# modified: apis.releng/cquery/apis.RSD-4863.cquery
# modified: apis.releng/cquery/apis.RSD-4864.cquery
# modified: apis.releng/cquery/apis.RSD-4865.cquery
# modified: apis.releng/cquery/apis.RSD-4866.cquery
# ....
no changes added to commit (use "git add" and/or "git commit -a")
.gitconfig:
[core]
autocrlf = true
.gitattributes在存储库中:
# Set the default behaviour, in case people don't have core.autocrlf set.
* text=auto
发生这种情况有多种原因。
core.autocrlf
启用设置.gitattributes
带有smudge
或text
过滤器的文件autocrlf
尝试解决跨平台开发的行尾难题,但通常会导致超出解决方案的问题。在将文件添加到资源库时,
它将Windows样式的行尾(\r\n
)转换为Unix样式的行尾()\n
。在Windows计算机上工作时,检出文件时会将其转换回Windows样式的行尾。
尽管总体思路还不错,但是它可能会导致严重的问题,尤其是在二进制文件上运行amok时。因此,大多数情况下,自己处理行尾是一个明智的选择。
您可以查看此问题以获取有关的更多信息autocrlf
。
使用.gitattributes
文件时,smudge
过滤器可能会在结帐时修改您的文件。或者,即使您禁用了该text
属性,也可以将其用于启用。autocrlf
.gitconfig
您可能的解决方案是autocrlf
全局禁用(git config --global core.autocrlf false
)并* text=auto
从.gitattributes
文件中删除该行。
您应该继续提交.gitattributes
文件并将其推送到远程。
与其他所有提交一样,您必须自己确保所做的更改在希望它们进行的所有分支上都可用。它们不会在整个存储库中神奇地可用。
在那之后,一个克隆有望产生一个干净的工作目录。
最后说明
通常git应该忽略autocrlf
ed文件,以避免像您当前所遇到的那样混乱的状态输出,但这似乎并不总是有效。避免的另一个原因autocrlf
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句