[解決済み] なぜGitでcore.autocrlf=trueを使うべきなのでしょうか?
質問
Windows と OS X の両方からアクセスできる Git リポジトリを持っていますが、すでに CRLF 行終端を持つファイルがいくつか含まれていることが分かっています。私が知る限り、これに対処する方法は2つあります。
-
セット
core.autocrlf
からfalse
をあらゆる場所に配置します。 -
説明書に従ってください こちら (GitHubのヘルプページでも紹介されています) を使って、リポジトリをLF改行のみ含むように変換し、その後に
core.autocrlf
からtrue
をWindowsで、そしてinput
をOS X上で実行します。この方法の問題点は、もし私がリポジトリに何らかのバイナリファイルを持っている場合、その:- は、gitattributesでバイナリとして正しくマークされていません。
- がCRLFとLFの両方を含むことがある。
が破損してしまいます。私のリポジトリにそのようなファイルが含まれている可能性があります。
では、なぜGitの改行コード変換をオフにしてはいけないのでしょうか?ウェブ上では、行末を変換するために
core.autocrlf
をオフにすると問題が発生しますが
具体的な
今のところわかったのは、kdiff3がCRLFの終端を処理できないこと(私には関係ありません)と、一部のテキストエディタに行末の問題があること(これも私には関係ありません)くらいでしょうか。
このリポジトリは私の会社の内部用なので、autocrlfの設定や行末の要件が異なる人たちと共有することを心配する必要はないです。
その他、私の知らないところで、改行コードをそのままにしておくと何か問題があるのでしょうか?
どのように解決するのですか?
を設定する唯一の具体的な理由は
autocrlf
から
true
があります。
-
避ける
git status
としてすべてのファイルを表示します。modified
これは、Unix ベースの EOL Git リポジトリを Windows リポジトリにクローンする際に自動的に EOL 変換が行われるためです ( 83号 など) -
そして
あなたのコーディングツールは、何らかの形で
ネイティブ
EOLスタイルがファイル内に存在すること。
- 例えば、ネイティブEOLを検出するようにハードコードされたコードジェネレータの場合
- ネイティブEOLを検出するための正規表現またはコードセットを持つ他の外部バッチ(あなたのレポの外部)
- Eclipseのプラグインの中には、プラットフォームに関係なくCRLFを含むファイルを生成するものがあると思いますが、これは問題です。
- メモ帳.exeでコードを書くと( Windows 10 2018.09+を使用していない限り、メモ帳は検出されたEOL文字を尊重します。 ).
という具体的な治療法が見えてこない限り
しなければならない
ネイティブEOLに対応するため。
退出
autocrlf
から
false
(
git config --global core.autocrlf false
).
なお、このコンフィグは ローカル というのも、レポからレポへ設定がプッシュされないからです。
もし、そのレポをクローンしているすべてのユーザーに同じ設定をさせたい場合は、"をチェックしてください。
最適なのは
CRLF
gitでの処理戦略?
を使用しています。
text
属性で
.gitattributes
ファイル
.
例
*.vcproj text eol=crlf
*.sh text eol=lf
注意:git 2.8 (2016年3月) からは、マージマーカーが
もはや
は、CRLF ファイルに混合行末 (LF) を導入します。
"を参照してください。
Git の "<<<<< HEAD" マージ行で CRLF を使用するようにする。
"
関連
-
[解決済み] Git で直近のローカルコミットを取り消すには?
-
[解決済み] Gitブランチをローカルやリモートで削除するには?
-
[解決済み] git pull」と「git fetch」の違いは何ですか?
-
[解決済み] コミット前に 'git add' を取り消すにはどうすればよいですか?
-
[解決済み] リモートのGitブランチをチェックアウトするには?
-
[解決済み] Git リポジトリを以前のコミットに戻すにはどうすればよいですか?
-
[解決済み] 現在のGit作業ツリーからローカル(未追跡)ファイルを削除する方法
-
[解決済み] Git で、ステージされていない変更を破棄するにはどうしたらいいですか?
-
[解決済み】"git pull" でローカルファイルを強制的に上書きするには?
-
[解決済み】ローカルの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が「変更をコミットするか、マージする前に隠してください」と言うのを解決するにはどうしたらいいですか?
-
[解決済み】現在のブランチの先端がリモートブランチより遅れているため、更新が拒否されました。
-
[解決済み】ERROR: Error cloning remote repo 'origin'.
-
git commits with an error: 更新が拒否されました。現在のブランチの先端が、このブランチより後ろにあるためです。
-
[解決済み] git: fatal: リモートリポジトリから読み取れませんでした。
-
[解決済み] git が「Pull is not possible because you have unmerged files」と表示するのはなぜですか?
-
[解決済み] git commit で "fatal: CRLF would be replaced by LF in" という致命的なエラーが発生する。
-
[解決済み] GitでCRLF(キャリッジリターン、ラインフィード)を処理するための戦略とは?
-
[解決済み】git filter-branchで行末を修正しようとしたがうまくいかない
-
[解決済み】Gitのステータスで、中身が同じなのにファイルが変更されたと表示される。