【问题标题】:why git is considering the whole file changed while just a part of it is changed为什么 git 考虑更改了整个文件,而只是更改了其中的一部分
【发布时间】:2012-10-21 11:07:41
【问题描述】:

我正面临git 的奇怪情况。我刚刚在一个长文件中编辑了几行,但是当我提交更改时,我看到 git 只是用红色突出显示了整个文件内容。怎么了?

我正在使用 git 的 windows GUI

编辑:我现在记得的一件事是我在最后一次提交中将 .csproj 添加到了 gitignore 列表中。这对这个有影响吗?

更新:朋友建议的问题来自行尾。我用这个questionanswer解决了它

【问题讨论】:

  • 奇怪了,你确定你之前提交过那个文件的内容吗? git diff 告诉你什么?你没有改到没有那个特定文件的分支吗?
  • @rlegendi:我记得的一件事是我在最后一次提交中将 .csproj 添加到了 gitignore 。这就是问题,对吧?
  • 给出你的 git 状态的输出。
  • 另外,您的文本编辑器是否使用了错误的行尾?是否可能使用导致 git 认为您的整个文件是一长行的行尾?
  • 正如其他人所建议的,这听起来很像一个行尾问题:core.autocrlf 设置为 (git config core.autocrlf) 是什么,您使用什么编辑器更改文件?

标签: visual-studio-2010 git


【解决方案1】:

问题是由于 行结束

git config core.autocrlf 设置为 true 。我使用了这 2 个帖子中提到的解决方案

Dealing with line endings

Trying to fix line-endings with git filter-branch, but having no luck

并将其设置为 false 。就解决了。

【讨论】:

    【解决方案2】:

    我们在 Windows 上的 Visual Studio 2015 (vs2015) 中遇到了同样的问题,其中的文件我们已编辑但未完成所有编辑。

    我要添加到另一个答案的唯一一件事是我们最终做的就是尝试通过注释掉来编辑解决方案根目录下的 .gitattributes

    * text=auto
    

    成为

    #* text=auto
    

    根据this 文章,此条目会覆盖 git config,因此即使您删除 git config 中的其他条目,问题仍然可能发生。

    注释 .gitattributes 删除了虚假的编辑,取消注释它又为我们添加了虚假的编辑。

    这个答案最初来自:Files showing as modified directly after git clone

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-19
      • 2013-03-02
      • 1970-01-01
      相关资源
      最近更新 更多