4

C# コードを含む git リポジトリがあり、MSysGitWindows で実行しています。

core.autocrlfがオンになっており、この質問の を使用してい.gitattributesますこの Github ガイドの下部に記載されているように、リポジトリを「再正規化」しました。

リポジトリ内の一部.csファイルで、1 文字でも変更する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;
...

CRLF1文字を変更します(そして、タブがまだtrueではないことに注意してください):

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 プログラムは、2 つのファイルがそれほど異なっているとgit diffは考えません。Unix では、あまり異なっているとは考えていませんが、msysgitそうです。

これまでにこれに遭遇したことはありますか、何かアイデアはありますか?

4

1 に答える 1

3

Gitにファイル全体を変更されたものとして表示させることができるいくつかのこと:

  • 行末-しかし、あなたはこれらをチェックしたと言いました、そしてそれらは同じです。
  • インデント-VS(特にいくつかの拡張機能がインストールされている場合)は、インデントをタブからスペースに、またはその逆に変更する場合があります。これは、「空白を表示」(VSではCtrl-R、Ctrl-W、または別の関連オプション)で確認できます。
  • エンコーディング-VSがファイルを別のエンコーディング(UTF16など)で再エンコードすることを決定した場合、テキスト表現は同じように見えますが、完全に変更されたものとして表示される場合があります。
于 2012-10-29T12:10:31.223 に答える