WindowsでのGit。crlfの設定は何を意味するのか?
質問
gitのCrLf設定に関連する複雑なことがよくわかりません。
core.autocrlf
,
core.safecrlf
私はチームでクロスプラットフォームのプロジェクトを開発しており、WindowsとLinuxの両方の開発者が、行末のスタイルという理由だけでファイルを修正したとgitがマークすることなく、一緒に作業できるようにしたいと思っています。
さまざまな設定は何を意味するのでしょうか?どのようなオプションを選択すると、どのような結果になるのでしょうか。そして、私の場合、何が最良の解決策になるでしょうか?
はい、わかっています。 この質問 で、そこでの回答は洞察力に欠け、したがって役に立ちませんでした。
どのように解決するのですか?
の3つの値は
autocrlf
:
-
true
- コンテンツがリポジトリに入る(コミットされる)とき、その行末は LF に変換され、コンテンツがリポジトリから出る(チェックアウトされる)とき、その行末は CRLF に変換されます。これは一般的に、無知なWindowsユーザーやエディターのためのものです。エディター(またはユーザー)は CRLF 終わりのファイルを作成し、通常の LF 終わりのファイルを見るとパニックになりますが、リポジトリでは LF 終わりにしたい、という前提で考えると、これでうまくカバーできます。しかし、うまくいかないこともありえます。リンク先の質問には、偽のマージコンフリクトと変更されたファイルのレポートの例があります。 -
input
- というように、コンテンツがリポジトリに入るときは改行コードがLFに変換されますが、出ていくときはそのままになります。これは基本的に同じ領域でtrue
と同じ領域で、エディタが実際に LF 終止符を正しく扱えるという前提で、誤って CRLF 終止符のファイルを作成する可能性を防いでいるだけです。 -
false
- git は改行コードを全く扱いません。あなた次第です。これは多くの人が推奨していることです。この設定では、ファイルの改行コードがいじられようとすると、それを意識しなければならなくなります。そのため、マージの衝突はかなり少なくなります(知識のあるユーザーを想定しています)。開発者にエディタ/IDEの使い方を教育することで、この問題はかなり解決されます。私が見てきたプログラマー向けに設計されたすべてのエディタは、適切に設定されていれば、これに対処することが可能です。
以下のことに注意してください。
autocrlf
であるコンテンツには影響しません。
であるコンテンツには影響を与えません。
であるコンテンツには影響を与えません。もしあなたが以前に CRLF 末尾を持つものをコミットしたなら、それはそのまま残ります。これは autocrlf に依存しないようにする非常に良い理由です。あるユーザーがそれを設定していない場合、CRLF 終わりのコンテンツをリポジトリに取り込むことができ、それが残ってしまうからです。正規化を強制するもっと強力な方法は
テキスト属性
に設定することです。
auto
を設定すると、git がその内容を (バイナリではなく) テキストだと判断した場合に行末の正規化を行うためのマークが付けられます。
関連するオプションとして
safecrlf
で、これは基本的にバイナリファイルに対して不可逆的にCRLF変換を行わないようにするための方法です。
私は Windows の問題と git を扱った経験があまりないので、影響や落とし穴についてのフィードバックは確かに歓迎されます。
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] リモート Git リポジトリの URI (URL) を変更するには?
-
[解決済み] ローカルの Git リポジトリが元々クローンされた URL を特定するにはどうすればよいですか。
-
[解決済み] 改行設定の変更方法
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み] Git で最新のコミットを新しいブランチに移動する
-
[解決済み】Gitバージョン管理でファイルの変更履歴を見る
-
[解決済み】Gitでコミットをチェリーピックするというのはどういう意味ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] GitでCRLF(キャリッジリターン、ラインフィード)を処理するための戦略とは?
-
DockerでWindows 10からVolumeボリュームにフォルダを共有する
-
[解決済み] git status は変更を表示するが、git checkout -- <file> は変更を削除しない。
-
[解決済み] IE10はIE7モードでレンダリングされます。強制的に標準モードにする方法は?
-
[解決済み] Windowsで環境変数をエクスポート/インポートするには?
-
[解決済み] .bat "ファイルのコマンドラインパラメータを確認するには?
-
[解決済み] Windowsで.gitconfigの場所を変更する
-
[解決済み] Windowsで開いている名前付きパイプの一覧を取得するにはどうすればよいですか?
-
[解決済み] WSL (Bash on Windows) のルートファイルシステムを別のハードディスクに移動する?
-
[解決済み] GNU MakeをWindowsで使うには?