gpt4 book ai didi

c# - 更改文件中的一个字符会导致 MSysGit 认为整个文件都已更改

转载 作者:太空狗 更新时间:2023-10-29 13:41:30 26 4
gpt4 key购买 nike

我有一个包含 C# 代码的 git 存储库,我正在 Windows 上运行 MSysGit

core.autocrlf 已打开,我正在使用来自 this question.gitattributes ,并且我按照 this Github guide 底部提到的那样“重新规范化”了我的 repo 协议(protocol).

现在对于我存储库中的 一些 .cs 文件,即使我更改一个字符,MSysGit 也会认为整个文件都已更改.

我克隆了存储库。我尝试先在 Visual Studio 中编辑文件,然后尝试在 SciTE 中打开它它显示了行结束符和制表符,而且我相信它不会对文件做任何奇怪的事情(比如改变编码)。

所以,我克隆了新的存储库:

$ git clone git clone git@git.assembla.com:my-repo.v2.git
$ cd my-repo/

我检查存储库和文件:

$ git status
# On branch master
nothing to commit (working directory clean)
$ git diff path/to/myfile.cs
$

我在 SciTE 中打开文件(注意行尾是 CRLF 并且没有制表符):

using System;
using System.Collections.Generic;
...

并更改一个字符(并注意 CRLF 和没有制表符仍然为真):

using System;
!using System.Collections.Generic;
...

现在 git 认为一切都变了:

$ git diff path/to/myfile.cs
diff --git a/path/to/myfile.cs b/Dpath/to/myfile.cs
--- a/path/to/myfile.cs
+++ b/path/to/myfile.cs
@@ -1,116 +1,116 @@
-<U+FEFF>using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using Microsoft.Practices.EnterpriseLibrary.Data;
-using DataModel.Models;
-using DataModel.Mappers.Interfaces;
-using System.Data.Common;
-using System.Data;
...

一个普通的 diff 程序不会认为这两个文件有太大的不同,Unix 上的 git diff 不会认为它们有太大的不同,但是 msysgit 会.

有人以前遇到过这个问题或有任何想法吗?

最佳答案

一些可以使 Git 显示整个文件已更改的东西:

  • 行尾 -- 但你说你检查过这些,它们是一样的;
  • 缩进——VS(特别是如果您安装了一些扩展)可能会将缩进从制表符更改为空格,反之亦然。您可以使用“显示空白”(VS 中的 Ctrl-R、Ctrl-W 或您不同的相关选项)进行检查。
  • 编码——如果 VS 决定以某种不同的编码(例如 UTF16)重新编码文件,它可能会显示为完全改变,尽管文本表示看起来是一样的。

关于c# - 更改文件中的一个字符会导致 MSysGit 认为整个文件都已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13121134/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com