【问题标题】:There is nothing changed, but eclipse egit marks the file as changed没有任何变化,但 eclipse egit 将文件标记为已更改
【发布时间】:2011-11-22 13:00:02
【问题描述】:

我在 github 上使用 eclipse egit。我发现了一些奇怪的东西,我没有更改任何内容,但是 egit 将文件标记为“已更改”。查看图片:

  1. 文件“run.bat”被标记为“已更改”

  2. 与“git index中的文件”比较,你可以发现没有什么不同

  3. 与“HEAD中的文件”比较,你可以看到没有什么不同

我朋友用mac,我用windows,但我们都配置git为“commit unix lineend”。我还检查了我的source的lineend和HEAD,它们是一样的(我配置了git将它们转换为“ \r\n" 拉时)

哪里错了?是不是Egit的bug?

【问题讨论】:

  • 检查行尾 - CR, CR-LF
  • “我配置 git 以在拉取时将它们转换为“\r\n””:这应该是那里的原因,不是吗?
  • 看起来您在一个文件中混合了行尾。不知道它会如何工作。自动转换对我来说很难预测,我通常禁用它...

标签: git egit


【解决方案1】:

Eclipse 首选项/团队/Git/配置/用户设置

(“核心”部分)

key: autocrlf
value: false

键应该已经存在,所以只需要编辑值。

如果创建新密钥,则使用core.autocrlf

【讨论】:

  • 这对我不起作用。用户设置选项卡中显示的 Location 属性是我的全局 gitconfig (C:\Users\William\.gitconfig),并且具有所有正确的设置。但是,git commit -m 工作正常,而 Eclipse 的 Commit 选项取消了我的行尾。
  • 这对我有帮助,但我不得不删除 repo 并重新导入。
  • 在我右键单击该项目并执行 Team->Synchronize Workspace 后工作
  • 如果key不存在,使用Add Entry...,以core.autocrlf为key,false为value,这也触发了 b>核心部分。
  • 这不是一个解决方案:它禁用了行尾的自动转换,这可能会解决比较问题,但会恶化很多其他事情。
【解决方案2】:

我在 Git 中遇到的第一件事。

我一直这么说:

git config --system core.autocrlf false

要消除差异和补丁视图中的 CR 突出显示,请使用:

git config --system core.whitespace cr-at-eol

如果您与他人共享您的计算机,请将“--system”替换为“--global”。

【讨论】:

  • 没有帮助我。您提到的更改在使用 git 命令行时生效,但不适用于 EGit。
  • @Ztyx 请查看我的回答,以获得 EGit 解决方案。
  • 您应该下拉到命令行以使用 git。或者获取一个 Eclipse 插件来显示命令行。
【解决方案3】:

作为跟进,因为我刚刚遇到了同样的问题,EGit 检测所有文件都已更改的另一个原因是 POSIX 文件权限问题,至少在与 Cygwin 的 git 一起使用时是这样。

以下将解决该问题;但是请记住,这也意味着它们会被忽略:

$ git config core.filemode false

【讨论】:

  • 非常感谢!这也需要关闭/打开项目。
  • 这也是我的问题。现在我能够修复文件的权限并提交。
  • 这也是我的问题。非常感谢,过去 1 小时寻找解决方案得到了回报!
【解决方案4】:

对于换行的 Eclipse 特定问题,您还可以在 Eclipse 首选项中更改返回字符,您可以在其中将新文本文件行分隔符从 Windows 语法更改为 Unix,这应该会有所帮助。

【讨论】:

  • 这是 autocrlf 设置为 false 的正确答案
  • 改变 just 这个偏好有所帮助,但是在更改该设置后必须重新启动我的 Eclipse。顺便说一句,我在 Windows 10 上使用 Eclipse 时遇到了这个问题,并且在 Windows-Eclipse 上报告为已更改的文件最初是在 Ubuntu 上修改的,然后推送到远程仓库并拉到 Windows 机器上。谢谢。
【解决方案5】:

您可以在比较/补丁下忽略与 Eclipse 设置的空白差异。 Preferences-->General-->Compare/Patch,在右边找到“Ignore white space”,选择这个选项。

【讨论】:

  • 以及:Preferences/Team/Git/[box Revionsion Information]“忽略空白更改”
【解决方案6】:

我也有同样的问题,来自 Eclipse git commit 正在显示这个问题

曾经修改过的文件并最终从文件中删除了更改,即使它在 Un staged changes 部分显示了该文件。

解决方案:
Eclipse -> 窗口 -> 首选项 -> 团队 -> Git -> 配置 -> 用户设置(右侧选项卡)

点击添加条目

Key  : core.autocrlf
Value: true

单击确定,然后单击应用 -> 确定 刷新您的“Git Staging 选项卡”或检查 Team -> commit 选项。现在它只会显示确切的更改。

【讨论】:

  • 这些对我在 Eclipse 上都不起作用。我运行了一些实用程序,它生成的类很少,但也改变了现有类的一些更改。现在,我在用空格过滤实际更改的文件方面花费了很多时间。
【解决方案7】:

我遇到了同样的问题,但建议的解决方案都没有奏效。我关闭了autocrlf 功能,安装了最新版本的 egit 和 git。存储库和本地文件的行尾都匹配。

问题是由 .gitattributes 中的条目引起的:

* text=auto eol=lf

因此我可以:

  • 删除属性
  • 提交更改

但同样有效的是转到命令行并输入

git reset --hard

然后在eclipse中刷新。

【讨论】:

    【解决方案8】:

    在一般->工作区。选择文本编码 UTF-8

    【讨论】:

    • 这将如何帮助解决 eclipse / git 中的行尾问题?
    • 你能详细说明一下吗?
    • 你读过问题和答案吗?编码与这个问题有什么关系?
    猜你喜欢
    • 1970-01-01
    • 2021-11-19
    • 2017-07-30
    • 2016-03-08
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    相关资源
    最近更新 更多