1. ホーム
  2. git

[解決済み] GitでCRLF(キャリッジリターン、ラインフィード)を処理するための戦略とは?

2022-03-15 13:13:17

質問

CRLFで終わる行を含むファイルをコミットしようとしましたが、失敗しました。

Windowsのパソコンで丸一日かけて様々な戦略を試しましたが、Gitを使おうとするのをやめて、その代わりに マーキュリアル .

CRLFの行末を適切に処理するには?

どのように解決するのですか?

この質問をしてから4年近く経ちますが、ようやく 見つけた 完全に納得のいく答え !

で詳細をご覧ください。 github:ヘルプ のガイドを参照してください。 改行コードの処理 .

Git では、行末のプロパティを設定することができます。 を使って直接レポを作成します。 テキスト属性 の中にある .gitattributes ファイルを作成します。このファイルは をオーバーライドします。 core.autocrlf を設定します。 を使用すると、すべての ユーザがどのような git 設定をしているかに関係なく

そして、このように

この利点は、行末の の設定はリポジトリと一緒に移動し 共同作業者がいるかどうかを気にする必要はありません。 は適切なグローバル設定を持っています。

以下は .gitattributes ファイル

# Auto detect text files and perform LF normalization
*        text=auto

*.cs     text diff=csharp
*.java   text diff=java
*.html   text diff=html
*.css    text
*.js     text
*.sql    text

*.csproj text merge=union
*.sln    text merge=union eol=crlf

*.docx   diff=astextplain
*.DOCX   diff=astextplain

# absolute paths are ok, as are globs
/**/postinst* text eol=lf

# paths that don't start with / are treated relative to the .gitattributes folder
relative/path/*.txt text eol=lf

便利な すぐに使える .gitattributes ファイルのコレクションです。 最も人気のあるプログラミング言語用です。使い始めに便利です。

を作成または調整したら .gitattributes を実行する必要があります。 行末の再正規化 .

なお GitHub デスクトップ を提案し、作成することができます。 .gitattributes ファイルを作成します。試しに、歯車のアイコン(右上)をクリックし、 > Repository settings ... > Line endings and attributes をクリックします。すると、推奨される .gitattributes と表示され、同意するとリポジトリ内の全ファイルの正規化が行われます。

最後に 行末を意識する 記事 は、その背景と、Git がどのように進化してきたかを説明しています。 を、このたびの件に関して 私は次のように考えています。 必読 .

あなたのチームには、EGit や JGit(EclipseやTeamCityなどのツールはこれらを使用しています)を使って変更をコミットしているユーザーがいることでしょう。この回答のコメントで@gatinuetaが説明したように、それでは運が悪いのです。

<ブロッククオート

EgitやJGitを使用している人がチームにいる場合、この設定は完全には満足できないでしょう。これらのツールは.gitattributesを無視し、CRLFファイルを喜んでチェックするからです https://bugs.eclipse.org/bugs/show_bug.cgi?id=342372

一つのトリックは、別のクライアントで変更をコミットさせることかもしれません、例えば ソースツリー . 当時の私たちのチームは、多くのユースケースでEclipseのEGitよりもこのツールを好んで使っていました。

ソフトウェアが簡単だなんて、誰が言ったの?