行末設定を変更する方法


582

行末を処理する方法の設定を変更できるファイルまたはメニューはありますか?

私は3つのオプションがあると読んだ:

  1. Windowsスタイルのチェックアウト、Unixスタイルのコミット

    GitはテキストファイルをチェックアウトするときにLFをCRLFに変換します。テキストファイルをコミットすると、CRLFはLFに変換されます。クロスプラットフォームプロジェクトの場合、これはWindowsでの推奨設定です( "core.autocrlf"が "true"に設定されています)。

  2. そのままチェックアウトし、Unixスタイルでコミットする

    テキストファイルをチェックアウトするとき、Gitは変換を実行しません。テキストファイルをコミットすると、CRLFはLFに変換されます。クロスプラットフォームプロジェクトの場合、これはUnixでの推奨設定です( "core.autocrlf"が "input"に設定されています)。

  3. そのままチェックアウト、そのままコミット

    テキストファイルをチェックアウトまたはコミットするとき、Gitは変換を実行しません。このオプションの選択は、クロスプラットフォームプロジェクトには推奨されません( "core.autocrlf"が "false"に設定されています)



3
これらのうちどれがデフォルトですか?
スティーブン

2
デフォルトはtrueのように見えることに注意してください。これは適切だと思います。
スティーブン

19
実際、3番目のオプションの方が効果的であることがわかりました。それ以外の場合、同じプラットフォーム(Windows / Linux)でバッチスクリプトとshスクリプトの両方を編集し、それらをコミットして、Gitが1つのプラットフォームの行末を自動的に「修正」する状況によくあります...いいえ、私は自分が好きです行末を意識して、そのまま正確にコミット/チェックアウトします。
JustAMartin 2018

1
@Neutrinoこれが真実であることを望みますが、行末で混乱するIDEの1つの例(およびこれをオフにするための適切な構成オプションを提供しない)はVisual Studioです。
カシオルナン

回答:


530

これを制御する通常の方法は git config

例えば

git config --global core.autocrlf true

詳細については、Pro Gitへのこのリンクを下にスクロールして、「core.autocrlf」という名前のセクションに移動してください。


これがどのファイルに保存されているかを知りたい場合は、次のコマンドを実行できます。

git config --global --edit

gitグローバル構成ファイルがテキストエディターで開くはずです。そのファイルがどこから読み込まれたかがわかります。


17
trueまたはfalse2つだけのオプション、インストーラーには3つあります
qwertymk

49
input3番目のオプションです(提供したリンクに記載されています)。3つのオプションはtrue| false| input
CodingWithSpike、2012年

2
ここでは、件名に別の良いのSOの質問です:stackoverflow.com/questions/3206843/...
CodingWithSpike

31
実際、あなた自身の質問をもう一度読んだ場合、コピー/貼り付けた抜粋で:"1 ... ("core.autocrlf" is set to "true") ... 2 ... ("core.autocrlf" is set to "input") ... 3 ... ("core.autocrlf" is set to "false")"基本的にあなた自身の質問に答えましたか?:)
CodingWithSpike

2
これは古い方法です。.gitattributesファイルを見てください。
eftshift0

176

OSで使用される行末フォーマット

  • Windows:(CRキャリッジリターン\r)とLF(LineFeed \n)のペア
  • OSX、Linux:LF(LineFeed \n

2つの方法で、各OSの行末フォーマットを自動修正するようにgitを設定できます。

  1. Gitグローバル構成
  2. .gitattributesファイルを使用

グローバル構成

Linux / OSXの場合
git config --global core.autocrlf input

これはコミットCRLFしたLFときに修正されます。

Windowsの場合
git config --global core.autocrlf true

これにより、ウィンドウでチェックアウトするときに、すべてLFCRLF

.gitattributesファイル

.gitattributesチームの全員が構成を設定することを望んでいないので、ファイルを保持することをお勧めします。このファイルはレポのルートパスに保持する必要があり、存在する場合、gitはそれを尊重します。

* text=auto

これにより、すべてのファイルがテキストファイルとして扱われ、チェックアウト時に終了するOSの行に変換されLF、コミット時に自動的に戻ります。明示的に伝えたい場合は、

* text eol=crlf
* text eol=lf

1つ目はチェックアウト用、2つ目はコミット用です。

*.jpg binary

.jpgパスに関係なく、すべての画像をバイナリファイルとして扱います。したがって、変換は必要ありません。

または、パス修飾子を追加できます。

my_path/**/*.jpg binary

3
CR(復帰)だけを使用するOS Xについてはどうですか?
jww 2017年

23
レガシーMacOS(つまりMacOS 9以前)はCR単独で使用されますが、OS Xは通常を使用しLFます。
ザカリーウェア2017年

2
Windows * text eol=lfで2回使用してチェックアウトできLFますか?
mbomb007

1
gitattributesのドキュメント設定によると* text=auto、コンテンツがテキストであるかどうかをgitに決定させます。すべてのファイルをテキストに強制すること* textのみが必要です。
エイドリアンW

eol=crMac OS 9およびその他のレガシープラットフォームでファイルを設定するにはどうすればよいですか?
NobleUplift

36

すべての開発者に再配布できるリポジトリ設定ソリューションについては、.gitattributesファイルのテキスト属性を確認してください。このようにして、開発者は手動でリポジトリに自分の行末を設定する必要がありません。また、リポジトリによって行末のスタイルが異なる可能性があるため、少なくとも私の考えでは、グローバルcore.autocrlfは最適ではありません。

たとえば、特定のパスでこの属性の設定を解除します[ -text]は、チェックインおよびチェックアウト時にgitが行末に触れないようにします。私の意見では、ほとんどの最新のテキストエディターは両方のタイプの行末を処理できるため、これが最良の動作です。また、開発者がチェックイン時に行末変換を行いたい場合でも、特定のファイルに一致するようにパスを設定するか、リポジトリのeol属性(.gitattributes内)を設定できます。

.gitattributesファイルとテキスト属性について詳しく説明しているこの関連記事も確認してください。GitでのCRLF(キャリッジリターン、ラインフィード)の最適な処理方法は何ですか?


. - text与えis not a valid attribute name: .gitattributes:1入れてくださいcat .gitattributes
jangorecki

3

私にとって、トリックはコマンドを実行することでした

git config auto.crlf false

プロジェクトのフォルダー内で、1つのプロジェクト専用にそれが欲しかった。

そのコマンドは、パスを追加することにより、パス{project_name} /。git / config(fyi .gitは隠しフォルダーです)内のファイルを変更しました

[auto]
    crlf = false

ファイルの最後。ファイルを変更しても同じトリックが実行されると思います。


1

PC形式からUNIX形式に変更されたファイル形式を元に戻す場合。

(1)亀GITを再インストールする必要があり、「行末変換」セクションで「そのままチェックアウト-そのままチェックイン」オプションが選択されていることを確認します。

(2)残りの構成をそのまま保持します。

(3)インストールが完了すると

(4)UNIX形式に変換されたすべてのファイル拡張子をテキストファイル(extensions.txt)に書き込みます。

ex:*.dsp
   *.dsw

(5)ファイルをクローンにコピーしますGITBASHで次のコマンドを実行します

while read -r a;
do
find . -type f -name "$a" -exec dos2unix {} \;
done<extension.txt
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.