【问题标题】:git memory error? cannot checkout/reset/undo a changegit内存错误?无法结帐/重置/撤消更改
【发布时间】:2010-10-11 22:31:25
【问题描述】:

拉动之后,git status 告诉我我已经更改了一个 16Mb 的 xml 文件。

我没有接触过这个文件;但是 EOL 问题可能会导致 git 的混乱(尽管我认为不是因为我有 autocrlf = input )。

但我写作是因为我无法摆脱这件事。

我已经尝试了以下各项:

  1. git reset --hard HEAD
  2. git checkout --derived/workflow/xml/definitions.xml
  3. git stash 保存

在每一个之后, git status 都会告诉我:

# Changed but not updated:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   derived/workflow/xml/definitions.xml

这是一个问题,因为之后我不能“隐藏弹出”,(即使在上面的 #3 之后,在执行“git stash save”之后)

环境

  • Windows XP
  • Cygwin Git 1.7.1

一些问题

  • git 是否因为文件太大而静默失败? (之前我曾短暂地看到 git 在内存问题上失败)
  • 如何解决此问题?

谢谢

【问题讨论】:

标签: git


【解决方案1】:

在这种情况下,问题源于我将“autocrlf”设置为“input”。

无论好坏,我们的构建过程都会生成带有“CRLF”行结尾的 xml 文件。

“git status”必须与“autocrlf”一起使用。虽然我没有接触或编辑过文件,但“git status”必须说“当你提交这个文件时,git 必须修改它,所以我会立即报告它已修改”。

“解决方案”是关闭 autocrlf。

没有 autocrlf,git status 返回“正确的东西”

【讨论】:

  • 我可能还建议修复您的构建过程。 :-)
【解决方案2】:

由于文件名的大小写,我遇到了类似的问题。在存储库中,有一个名为 file.txt 的文件和另一个名为 File.txt 的文件(或其他仅因大小写而异的名称)。 Git 没有预料到这一点,当在不区分大小写的文件系统(在我的情况下为 Mac OS X)上检查 repo 时,我遇到了同样的问题。

我的最终解决方案是从结帐中完全排除包含该文件的目录。在我的情况下,我不需要那个目录,这很幸运。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-30
    • 2011-12-07
    • 2011-04-05
    • 2016-12-07
    • 2012-01-25
    • 2021-11-03
    相关资源
    最近更新 更多