LFをCRLFに置き換えるgit


839

bashを使用して、Windows XPマシンでgitを実行します。SVNからプロジェクトをエクスポートし、ベアリポジトリのクローンを作成しました。

次に、エクスポートをベアリポジトリディレクトリに貼り付け、以下を実行しました。

git add -A

次に私は言っているメッセージのリストを得た:

LFはCRLFに置き換えられます

この変換の影響は何ですか?これはVisual Studioの.NETソリューションです。


14
@apphackerは、2つのファイルを比較するときに改行を自分で変更するよりも、行末を標準化するほうが煩わしくないためです。(もちろん、同意しない場合は、core.autocrlf機能をオフにしておくことができます)。
RJFalconer 2009

2
行全体に触れない限り、行末が異なる理由
ビョルン

3
さまざまなアイデアを試したり、トレースステートメントを追加して動作を確認したりするため、多くの行に触れることがよくあります。2行または3行に変更をコミットし、他の行を完全に無視したい場合があります。私が見つけた方法でそれらを元に戻していた(または私はそう思った)。
MatrixFrog 2010年

5
@MatrixFrog:エディターが壊れているようで、行末を自動検出できません。どっち?同じリポジトリにいくつかのLFファイルと他のCRLFファイルが必要なハイブリッドプロジェクトで作業しています。最新のエディターにとっては問題ありません。エディタの制限を回避するためにバージョン管理(またはファイル転送)を改行で混乱させることは、これまでで最悪の考えです。これは、以下の説明の単なる長さから明らかです。
MarcH 2014

4
私が知っている唯一の最新のエディターはVisual Studioです。Visual Studioは、改行がLFのファイルを喜んで開きます。その後、新しい行を挿入すると、CRLFが挿入され、行末の混在が保存されます。Microsoftはこれを修正することを拒否します。これは、他の点では非常に優れたIDEのかなり大きな欠陥です。--(
Jon Watte、2015

回答:


957

これらのメッセージはcore.autocrlf、Windowsののデフォルト値が正しくないことが原因です。

の概念autocrlfは、行末変換を透過的に処理することです。そしてそうです!

悪いニュース:値は手動で設定する必要があります。
朗報:gitインストールごとに1回だけ実行する必要があります(プロジェクトごとの設定も可能です)。

どのようautocrlfな作品

core.autocrlf=true:      core.autocrlf=input:     core.autocrlf=false:

        repo                     repo                     repo
      ^      V                 ^      V                 ^      V
     /        \               /        \               /        \
crlf->lf    lf->crlf     crlf->lf       \             /          \      
   /            \           /            \           /            \

ここでcrlf= winスタイルの行末マーカー、lf= unixスタイル(およびMac OSX)。

cr上記の3つのオプションのいずれについてもpre-osx は影響を受けません)

この警告が表示されるのはいつですか(Windowsの場合)

    - autocrlf= trueあなたは、UNIXスタイルを持っている場合はlf、ファイルのいずれかで(=めったに)、
    - autocrlf= inputあなたが勝つスタイルを持っている場合はcrlf、ファイルのいずれかで(=ほとんど常に)、
    - autocrlf= false- NEVER!

この警告はどういう意味ですか

LFはCRLFに置き換えられます」という警告は、コミットチェックアウトサイクルの後で(autocrlf= を持っているtrue)UNIXスタイルのLFが失われることを示しています(WindowsスタイルのCRLFに置き換えられます)。Gitは、WindowsでUNIXスタイルのLFを使用することを期待していません。

警告「CRLFはLFに置き換えられます」は、コミットチェックアウトサイクルの後で(autocrlf= を持つinput)ウィンドウスタイルのCRLFが失われることを示します(UNIXスタイルのLFに置き換えられます)。input窓の下で使用しないでください。

さらにもう1つの方法は、どのように表示するautocrlf作品

1) true:             x -> LF -> CRLF
2) input:            x -> LF -> LF
3) false:            x -> x -> x

ここで、xはCRLF(windowsスタイル)またはLF(unixスタイル)であり、矢印は

file to commit -> repository -> checked out file

直し方

のデフォルト値core.autocrlfはgitのインストール時に選択され、システム全体のgitconfig(%ProgramFiles(x86)%\git\etc\gitconfig)に保存されます。また、(次の順序でカスケード)もあります。

   - 「グローバル」(ユーザーごと)に位置gitconfig ~/.gitconfig、さらに別の
   -で「グローバル」(ユーザ単位)gitconfig $XDG_CONFIG_HOME/git/config又は$HOME/.config/git/config
   の「ローカル」(毎レポ)gitconfig - .git/configワーキングディレクトリです。

したがって、git config core.autocrlf現在使用されている値を確認するために作業ディレクトリに書き込み、

   – autocrlf=falseシステム全体のgitconfigに追加#システムごとのソリューション
   – git config --global core.autocrlf false            #ユーザーごとのソリューション
   –git config --local core.autocrlf false              #プロジェクトごとのソリューション

警告
git config設定は設定によって上書きできgitattributesます。
crlf -> lf新しいファイルを追加するときにのみ変換が行われます。crlf。リポジトリにすでに存在するファイルは影響を受けません。

道徳(Windowsの場合):
    -使用core.autocrlf= trueあなたにもUnix上でこのプロジェクトを使用する(と不本意UNIXの改行コードを使用するようにエディタ/ IDEを設定する)を計画している場合、
    -使用core.autocrlf= falseあなたはWindowsでのみ、このプロジェクトを使用する場合(または、あなたのエディタ/ IDE UNIXの改行コードを使用する)を設定している、
    - 決して使用しないcore.autocrlf= inputあなたは(に正当な理由がない限り、例えば、あなたが窓の下またはあなたがメイクファイルの問題に実行する場合、UNIXユーティリティを使用している場合)、

PS Windows用のgitをインストールするときに何を選択しますか?
Unixでプロジェクトを使用しない場合は、デフォルトの最初のオプションに同意しないでください。3番目のものを選択します(現状のままチェックアウト、現状のままコミット)。このメッセージは表示されません。ずっと。

PPS私の個人的な好みは、Unixスタイルの末尾を使用するようにエディター/ IDEを構成し、に設定core.autocrlfすることfalseです。


28
私がこれまでに費やした時間の間、私はcore.crlf = rackoffを期待していました;-)
PandaWood 2014年

10
コンテンツを再構成しました。おそらく、このように読む方が簡単になるでしょう
アントニーハッチキンス2014年

7
申し訳ありませんが、私のコメントがあなたの回答に対する批判として解釈されなかったことを願っています。「これまでのところまで」とは、この答えを見つける前のことです。
PandaWood 2014年

10
これはとても混乱しています。エディターでLFを設定しています。すべてのレポコードはLFを使用します。グローバルautocrlfがfalseに設定され、ホームディレクトリのコアgitconfigがfalseに設定されています。しかし、まだメッセージLFがCRLFに置き換えられています
isimmons

17
UNIXスタイルの末尾を使用するようにエディターを構成している場合はcore.autocrlf、入力に設定しないでください。私があなたの答えから集めたものから、それを入力に設定すると、リポジトリと作業ディレクトリが常にUNIXスタイルの行末になるようになります。なぜあなたそれをWindowsで絶対に望まないのですか?
Hubro

764

Gitには、行末の処理方法に関する3つのモードがあります。

$ git config core.autocrlf
# that command will print "true" or "false" or "input"

trueまたはの追加パラメーターを使用して、使用するモードを設定できます。false上記のコマンドライン。

場合はcore.autocrlf、trueに設定されている手段はあなたがGitが考えているのgitリポジトリにファイルを追加した時間がテキストファイルであること、それがコミットでそれを保存する前に、それだけでLFに、すべてのCRLFの改行コードをオンにします。あなたがgit checkout何かをするときはいつでも、すべてのテキストファイルは自動的にそれらのLF行の終わりをCRLFの終わりに変換させます。これにより、行末スタイルは常に一貫してLFになるため、各エディターが行末スタイルを変更するため、コミット時に大きなノイズを発生させることなく、異なる行末スタイルを使用するプラットフォーム間でプロジェクトを開発できます。

この便利な変換の副次的影響であり、これが表示されている警告です。最初に作成したテキストファイルがCRLFではなくLFで終わる場合、通常どおりLFで保存されますが、チェックすると後でそれはCRLFエンディングを持っています。通常のテキストファイルの場合、これは通常は問題ありません。この場合、警告は「参考情報」ですが、gitがバイナリファイルをテキストファイルであると誤って評価した場合、gitがバイナリファイルを破損するため、これは重要な警告です。

もし core.autocrlf falseに設定されているテキストファイルが-があるように確認されているので、何の行末変換はこれまで、実行されません。これは通常、すべての開発者がLinuxまたはWindowsのいずれかである限り、問題なく動作します。しかし、私の経験では、結局問題が発生する行末が混在したテキストファイルを取得する傾向があります。

私の個人的な好みは、Windows開発者として、設定をオンのままにしておくことです。

「入力」値を含む更新情報については、http://kernel.org/pub/software/scm/git/docs/git-config.htmlを参照してください。


116
ここで述べたように(stackoverflow.com/questions/1249932/…)、私は敬意をもって同意せず、その設定をOFFのままにします(そしてNotepad ++またはその他のエディターを使用して-そのままにして-終了行の文字をそのままにします)それは見つけます)
VonC

23
私はこの答えが好きで、autocrlfをtrueに設定したままにします。別の方法として、警告メッセージを自動的に強制終了する方法はありますか?
Krisc、2011年

12
このよく書かれた回答を、core.eol設定と比較して、おそらく.gitattributes構成と組み合わせて補強するとよいでしょう。私は実験を通して違いと重複を理解しようと試みてきましたが、それは非常に混乱しています。
seh

5
より永続的な解決策として、.gitconfigを次のように変更します:[core] autocrlf = false
RBZ

9
警告を消すだけの簡単な方法はありますか?私はそれを真にしたいのですが、私はそれを真に設定したことを知っています。すべての警告を常に表示する必要はありません...大丈夫です、本当に...:p
UmaN

160

すでにコードをチェックアウトしている場合、ファイルにはすでにインデックスが作成されています。git設定を変更した後、次のコマンドを実行します。

git config --global core.autocrlf input 

あなたはでインデックスを更新する必要があります

git rm --cached -r . 

そしてgitインデックスを次のように書き直してください

git reset --hard

https://help.github.com/articles/dealing-with-line-endings/#refreshing-a-repository-after-changing-line-endings

注:これにより、ローカルの変更が削除されます。これを行う前に変更を隠しておくことを検討してください。


23
構成の意味についての大規模な議論ではなく、シンプルでクロスプラットフォームで、修正するための明確な方法をありがとう。
エリス

2
git reset --hardの場合、ローカルでの変更が失われる可能性はありますか?私は上記のすべてのコメントをフォローしています
Freddy Sidauruk

5
はい、ローカルでの変更は失われます。--hardパラメータはインデックスと作業ツリーをリセットするため、追跡されたファイルへの変更は破棄されます。git-scm.com/docs/git-reset
Jacques

2
の意味はgit rm --cached -r .何ですか?なぜgit reset --hard十分ではないのですか?
ギヴェンコア2017

2
@gavenkoa @max必要な設定を変更git rm --cached -r .したgit reset --hard後でcore.autocrlf行末を再変換しない場合。gitインデックスをクリーンアップする必要があります。
wisbucky 2017年

80
git config core.autocrlf false

6
これをリポジトリルート内で実行してください
Hammad Khan

23
これがどのように役立つかわかりません。半数の人がautocrlfをtrueにして動作させる必要があり、残りの半数はfalse /入力にする必要があります。それで、何か、何かがくっついて「うまくいく」まで、これらの1回限りの回答をコンソールの壁にランダムに投げるのでしょうか。これは生産的ではありません。
Zoran Pavlovic

「致命的:gitディレクトリにありません」というエラーが表示されます。C:\ Program Files \ GitおよびC:\ Program Files \ Git \ binにcdしようとしました
pixelwiz

2
@mbb設定autcrlffalse、プロジェクトのすべてのユーザーにだけパント問題を。
jpaugh 2017

5
@pixelwiz:このコマンドはプロジェクトのみのプロパティを設定しています(そのため、実行するにはgitリポジトリの下にいる必要があります)。これをグローバルに設定する場合は、git config --global core.autocrlf false代わりに使用してください。
ミカエルPolla

49

unix2dosdos2unixはどちらもgitbashを使用するWindowsで使用できます。次のコマンドを使用して、UNIX(LF)-> DOS(CRLF)変換を実行できます。したがって、警告は表示されません。

unix2dos filename

または

dos2unix -D filename

ただし、このコマンドを既存のCRLFファイルに対して実行しないでください。2行ごとに空の改行が取得されます。

dos2unix -D filenameすべてのオペレーティングシステムで動作するわけではありません。互換性については、このリンクを確認しください。

何らかの理由でコマンドを強制する必要がある場合は、を使用してください--force。無効と表示されている場合は、を使用してください-f


8
それは何をするためのものか?
Salman von Abbas

1
ヘルプオプションの内容は次のとおりです。`--u2d、-D UNIXを実行-> DOS変換 `
Larry Battle

1
@Rifat混乱しています。あなたのコメントはそれdos2unix -Dがwindowsの行末をlinuxの行末に変換すると言っています。これは、DOS(CRLF)-> UNIX(LF)変換と同じではありません。ただし、UNIX(LF)-> DOS(CRLF)変換を実行dos2unix -hする-Dと記載されています。dos2unix詳細: gopherproxy.meulie.net/sdf.org/0/users/pmyshkin/dos2unix
ラリーバトル

1
@LarryBattleはい、あなたは-Dについて正しいです。実は、私がwindowsユーザーだったときに答えを投稿しました。そして、私がmacユーザーであるとき、私は1年以上後にコメントをしました:D BTW、説明をありがとう。
リファット

1
これでうまくいきました。-Dスイッチをサポートしていないように見えるCygwinを使用していますが、同じことを行う「unix2dos」コマンドがあります。私は問題の原因を知っていればいいのですが-core.autocrlf = falseがあり、それはWindows専用のリポジトリです。
Richard Beier

28

@Basiloungasの答えは近いですが古くなっています(少なくともMacでは)。

〜/ .gitconfigファイルを開き、safecrlffalseに設定します

[core]
       autocrlf = input
       safecrlf = false

それは*文字の終わりを明らかに無視します(とにかく私のために働いた)。


1
それはする必要がありますsafecrlf(「F」で)
alpipego

22

A 行末にはGitHubの記事は、このトピックについて話すとき、一般的に言及されています。

頻繁に推奨される構成core.autocrlf設定の使用に関する私の個人的な経験は非常に複雑でした。

私はWindowsとCygwinを使用しており、WindowsプロジェクトとUNIXプロジェクトの両方を別々のタイミングで扱っています。私のWindowsプロジェクトでさえ、bashUNIX(LF)の行末を必要とするシェルスクリプトを使用することがあります。

GitHubのcore.autocrlfWindows の推奨設定を使用して、UNIXプロジェクト(Cygwinで完全に機能するか、またはLinuxサーバーで使用するプロジェクトに貢献している)をチェックアウトすると、テキストファイルはWindowsでチェックアウトされます(CRLF )行末、問題の発生。

基本的に、私が持っているような混合環境では、グローバルcore.autocrlfをオプションのいずれかに設定しても、場合によってはうまく機能しません。このオプションはローカル(リポジトリ)のgit構成で設定される可能性がありますが、WindowsとUNIXの両方に関連するものを含むプロジェクト(たとえば、いくつかのbashユーティリティスクリプトを含むWindowsプロジェクトがある)には十分ではありません。

私が見つけた最良の選択は、リポジトリごとの.gitattributesファイルを作成することです。GitHubの記事はそれを言及しています。
その記事の例:

# Set the default behavior, in case people don't have core.autocrlf set.
* text=auto

# Explicitly declare text files you want to always be normalized and converted
# to native line endings on checkout.
*.c text
*.h text

# Declare files that will always have CRLF line endings on checkout.
*.sln text eol=crlf

# Denote all files that are truly binary and should not be modified.
*.png binary
*.jpg binary

私のプロジェクトのリポジトリの1つで:

* text=auto

*.txt         text eol=lf
*.xml         text eol=lf
*.json        text eol=lf
*.properties  text eol=lf
*.conf        text eol=lf

*.awk  text eol=lf
*.sed  text eol=lf
*.sh   text eol=lf

*.png  binary
*.jpg  binary

*.p12  binary

設定するのはもう少しですが、プロジェクトごとに1回実行してください。どのOSのコントリビューターも、このプロジェクトで作業するときに行末で問題が発生しないはずです。


これに出くわし、他の基本的なテキストファイルの中でCygwinスクリプトを使用してリポジトリを管理しようとしています。拡張子のないファイル(「fstab」、「sshd_config」など)をどのように処理しますか?リンクされた記事はそのシナリオをカバーしていません。
マイクルー

1
@MikeLouxこの方法を試してください:stackoverflow.com/a/44806034/4377192
Gene Pavlovsky

私はそれがとtext=false eol=falseいくぶん同じように機能することを発見しましたbinary。いいですか?「これらはテキストファイルであることはわかっていますが、正規化されたくない」と示すと便利な場合があります
joeytwiddle

19

vimでファイル(例:)を開き:e YOURFILEENTER、次に

:set noendofline binary
:wq

2
で単に編集するvimと、すべての行末がそのまま残ります。
2012

一部のCocoapodsファイルでこの問題が発生しています。上記はそれらのほとんどを修正しました。残りについては、s / {control-v} {control-m} //がうまくやった。2つの制御コードを一緒に使用すると、OS Xを使用している人がWindowsファイルでよく見る^ Mを作成できます。
janineanne 2013年

16

私もこの問題を抱えていました。

SVNは行末変換を行わないため、ファイルはそのままCRLF行末でコミットされます。次にgit-svnを使用してプロジェクトをgitに入れると、CRLFの末尾はgitリポジトリ全体に残ります。これは、gitが自分自身を見つけることを期待している状態ではありません。デフォルトでは、unix / linux(LF)の行末しかありません。チェックインした。

その後、ウィンドウ上でファイルをチェックアウトすると、autocrlf変換はファイルに影響を与えません(ファイルには現在のプラットフォーム用の正しい終了があるため)。ただし、チェックインされたファイルとの違いがあるかどうかを判断するプロセスは、逆変換を実行します比較するに、チェックアウトされたファイルのLFであると考えているものとリポジトリの予期しないCRLFを比較します。

私が見る限り、あなたの選択は:

  1. git-svnを使用せずにコードを新しいgitリポジトリに再インポートします。これは、行末が最初のgit commit --allで変換されることを意味します
  2. autocrlfをfalseに設定し、行末がgitの優先スタイルではないという事実を無視します
  3. autocrlfをオフにしてファイルをチェックアウトし、すべての行末を修正し、すべてをチェックインして、再びオンに戻します。
  4. リポジトリの履歴を書き直して、元のコミットにgitが予期していなかったCRLFが含まれないようにします。(履歴の書き換えに関する通常の警告が適用されます)

脚注:オプション#2を選択した場合、私の経験では、補助ツールの一部(リベース、パッチなど)はCRLFファイルに対応せず、遅かれ早かれCRLFとLFが混在するファイル(一貫性のない行)になる末尾)。私は両方のベストを得る方法を知りません。


2
履歴を書き換えることができると仮定して、リストに追加する4番目のオプションがあると思います。最初にgit-svnで作成したgitリポジトリを取得し、その履歴を書き直してCRLF改行をなくすことができます。これにより、svnの履歴全体で後方に拡張された正規化された改行が得られます。ユーザーkeoは、stackoverflow.com / a / 1060828/64257で1つのソリューションを提示します。
Chris

脚注について:rebaseCRLFには問題ありません。私が知っている唯一の問題は、標準のgitマージツールが競合マーカー( "<<<<<<"、 ">>>>>>"など)をLFのみで挿入するため、競合マーカーのあるファイルは行末が混在しています。ただし、マーカーを削除すると、すべて正常です。
sleske 2013

過去3年間でgitの処理が変更された可能性があります。これは、当時のgitでの直接的な経験でした。それ以来、この特定の問題を再検討する必要はありませんでした。ymmv。
Tim Abell 2014年

1
@sleskeはgit 2.8以降、マージマーカーで混合行末が導入されなくなりました。stackoverflow.com/a/35474954/6309を
VonC

@VonC:いいですね。Windowsで作業する必要があるときに知っておくと便利です。
sleske

12

〜/ .gitattributesファイルから以下を削除する

* text=auto

gitが最初の場所で行末をチェックするのを防ぎます。


6
不正解です。その行が存在する場合、core.autocrlfの構成をオーバーライドします。それが「true」に設定されている場合、いいえ、その行を削除しても、gitが行末をチェックすることを妨げません。
アラファンギオン2013

1
それでも、core.autocrlfがに設定されているfalse場合、これを削除しないと、autocrlfをfalseに設定してもあまり効果がありません。そのため、これは役に立ちました(それだけでは不十分です)。
Matty

2
これに賛成!「gitによるチェックが妨げられます」という部分は技術的に正しくありませんが、これは、text=設定が.gitattributesある場合にそれを具体的に言及している唯一の回答です(存在する場合、ブロッカーになります)。したがって、他の答えは不完全です。私が行っていたナット私のファイルは、私は私を変えた回数に関係なく、「修正」として表示し続け、なぜしようとする姿を実施autocrlfし、safecrlf設定&チェックアウト&Gitのキャッシュ&ハードリセットを解除します。
jdunk

10

それは読むべきです:

警告:(それをチェックアウトするか、現在のcore.autocrlfである別のフォルダーに複製するとtrue、)LFはCRLFに置き換えられます

現在の)作業ディレクトリで、ファイルの元の行が終了します。

この画像は、それが何を意味するかを説明する必要があります。 ここに画像の説明を入力してください


また、Subversionに送信されるもの(そうする場合)には変換があることも意味します。
jpaugh 2017

10

http://www.rtuin.nl/2013/02/how-to-make-git-ignore-different-line-endings/

echo "* -crlf" > .gitattributes 

個別のコミットでこれを行うか、gitが単一の変更を行ったときに、ファイル全体が変更されたと見なす可能性があります(autocrlfオプションを変更したかどうかによって異なります)。

これは本当に機能します。Gitは混合行末プロジェクトの行末を尊重し、それらについて警告しません。


2
これは、CRLFとLFの間で変換する場合に特に便利ですが、いくつかの.shファイルはそのままにする必要があります。私は*.sh -crlfいつも使用しています...
MartinTeeVarga

9

Windowsでのgitについてはあまり知りませんが...

gitが実行中のプラットフォーム(Windows)の形式に一致するように戻り形式を変換しているように見えます。CRLFはWindowsのデフォルトの戻り形式ですが、LFは他のほとんどのOSのデフォルトの戻り形式です。

おそらく、コードが別のシステムに移動されたときに、戻り形式が適切に調整されます。また、gitは、たとえばJPEGでLFをCRLFに変換しようとするのではなく、バイナリファイルをそのまま維持するのに十分スマートだと考えています。

要約すると、おそらく、この変換についてあまり心配する必要はありません。ただし、プロジェクトをtarballとしてアーカイブする場合、他のコーダーはおそらくCRLFではなくLF行ターミネーターを使用することを望みます。気にかけている量(およびメモ帳を使用していない場合)に応じて、可能であればLFリターンを使用するようにgitを設定できます。

付録:CRはASCIIコード13、LFはASCIIコード10です。したがって、CRLFは2バイト、LFは1バイトです。


5
だれもそれを言ったように思われないので、CRは「キャリッジリターン」を表し、LFは「ラインフィード」を表します。2つ目の注意点として、多くのWindowsエディターは改行を表すLF文字が代わりにCRLF文字のペアになるテキストファイルを静かに変更します。エディターのユーザーには警告すらされませんが、Gitには変更が表示されます。
user2548343

7

最新のgitがインストールされていることを確認してください。
上記のようにgit config core.autocrlf false、git(バージョン2.7.1)を使用しましたが、機能しませんでした。
その後、gitをアップグレードすると(2.7.1から2.20.1に)動作します。


私はあなたがgit 2.17.1を持っていることを意味したと思います。私は同じ問題を抱えていて、更新を行い、これもそれを修正しました。私はあなたの答えを見ました!
Phillip McMullen

5
  1. Notepad ++でファイルを開きます。
  2. 編集/ EOL変換に移動します。
  3. Windows Formatをクリックします。
  4. ファイルを保存します。

1
を使用git config --global core.autocrlf falseして、Git Unixがコミット時に行末をに設定しないようにしてください。フォローアップしてgit config core.autocrlf、実際にfalseに設定されていることを確認します。
Contango 2017年

5

OPの質問はウィンドウに関連しており、管理者が機能しなかったため、ディレクトリに移動したりNotepad ++でファイルを実行したりせずに他のユーザーを使用することはできませんでした。

C:\Program Files (x86)\Git\etc>git config --global core.autocrlf false

3

多くのテキストエディターでは、に変更できますLF。以下のAtomの手順を参照してください。シンプルで明示的。


CRLF右下をクリックしてください:

ここに画像の説明を入力してください

LF上部のドロップダウンで選択:

ここに画像の説明を入力してください


2

GNU / Linuxシェルプロンプトでは、dos2unixおよびunix2dosコマンドを使用して、MS Windowsからのファイルを簡単に変換/フォーマットできます。


2

CRLFは、2つの異なるOS(LinuxとWindows)で「コード」を使用しているときに問題を引き起こす可能性があります。私のPythonスクリプトはLinux Dockerコンテナーで作成され、Windows git-bashを使用してプッシュされました。LFがCRLFに置き換えられるという警告が表示されました。私はあまり考えませんでしたが、後でスクリプトを開始したとき、それは言いました/usr/bin/env: 'python\r': No such file or directory。今、\rあなたのための分岐点のために。Windowsは「CR」を使用します-復帰-'\ n'の上に改行文字として- \n\r。それはあなたが考慮しなければならないかもしれないものです。


0

Windowsのほとんどのツールは、テキストファイルでLFのみを受け入れます。たとえば、次のサンプルコンテンツ(パーツ)を使用して、 '。editorconfig'という名前のファイルでVisual Studioの動作を制御できます。

 indent_style = space
 indent_size = 2
 end_of_line = lf    <<====
 charset = utf-8

オリジナルのWindows-NotepadのみがLFで動作しませんが、より適切なシンプルなエディターツールがいくつか利用可能です!

したがって、WindowsのテキストファイルでもLFを使用する必要があります。これは私のメッセージです。WindowsでCRLFを使用する理由はありません。

(同じ議論はC / ++のインクルードパスで\を使用しています、それはでたらめです、スラッシュで#include <pathTo / myheader.h>を使用してください!、これはC / ++標準であり、すべてのMicrosoftコンパイラがサポートしています)。

したがって、gitの適切な設定は

git config core.autocrlf false

私のメッセージ:dos2unixやunix2dosのような古い思考プログラムを忘れてください。LFがWindowsでの使用に適していることをチームで明確にします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.