マージの競合によってファイル全体が競合するという問題がありました。これは、マージ時にローカル ファイルの改行がすべて unix スタイルの改行 (LF) になることになりました (マージ前に、開発ブランチと機能ブランチの両方がチェックアウト時に CRLF 改行を持っていました)。
走ったら
git rm --cached -r .
git add -A
git status に変更は表示されません。しかし、.gitattributes
ファイルを削除して別のファイルをすべて削除/追加すると、特定のファイルが別の新しい行で更新されました。たとえば、100 行のファイルの場合、100 行が削除され、100 行が追加されます。両方のブランチに対してこれを行った後、マージは問題ありませんでした。
.gitconfigautocrlf = true
が設定され、.gitattributes ファイルにはこれらの行しかありませんでした。以下の行は、マージ戦略にのみ影響すると思います。
*.csproj -text merge=union
*.sln -text merge=union
この .gitattributes が新しい行のコミット方法を変更するのはなぜですか?
また、autocrlf を true に設定すると、.gitattributes 内の何かがそれをオーバーライドしていない限り、なぜマージが LF と CRLF を比較するのかわかりません。
https://help.github.com/articles/dealing-with-line-endingsから
必要に応じて、特別な .gitattributes ファイルを構成することで、リポジトリごとに Git が行末を管理する方法を構成できます。このファイルはリポジトリにコミットされ、個々の core.autocrlf 設定をオーバーライドして、Git 設定に関係なく、すべてのユーザーに対して一貫した動作を保証します。.gitattributes ファイルの利点は、ライン構成がリポジトリに関連付けられていることです。
これにより、.gitattributes が autocrlf をオーバーライドできることは明らかですが、eol 変換を実行するように指示する設定はありません。おそらく、暗黙的に使用されるデフォルトがいくつかあります。