1

私は Windows 7 で作業しており、EOL の問題を防ぐために.gitattributes、次のようにファイルを設定しています ( github のヘルプで説明されています)。

* text=auto

*.js text

しかし今、行末jsだけを持つファイルをコミットすると、次の警告が表示されます。LF

warning: LF will be replaced by CRLF in XXX.js.
The file will have its original line endings in your working directory.

ええと、これCRLFは、リポジトリとLF作業ディレクトリにあるように思えますが、まったく逆であるべきです(そして、そうであってほしいと思っています)。-fileのjs行末はまだLFコミット後です。

警告を間違って読んでいますか、それとも間違った方法でセットアップし.gitattributesましたか? ありがとう!

ps 私のグローバル git config にはがありますが、ファイルautocrlf = trueのためにコミット時に EOL 変換に影響を与えるべきではありません.gitattributes

ppsjsファイルはサブディレクトリにあります

4

2 に答える 2

2

無効にする必要がありますautocrlf– この「状況」を引き起こしているわけではありませんが gitattributes 設定と衝突し、何のメリットもありません。

レポでの EOL 変換に問題はありません。あなたが引用したメッセージは、このファイルを(これらの設定で)再度チェックアウトすると、作業ディレクトリにCRLFがあることを伝えています。しかし、今のところは LF のままです。

レポに含まれる行末を知りたい場合は、次を実行します。

git show commit:path/to/file | file -k -

そのメッセージを取り除きたい場合は、CRLF でファイルを保存するようにエディターを設定してください。またはそれ以上: すべてのツールが LF エンディングをサポートしている場合は、チェックアウト時に LF を使用するようにこのリポジトリを設定します (誤って CRLF でファイルを保存した場合でも、正規化されます)。

git config core.eol lf

注:core.autocrlfこれはおそらく、に設定した場合にのみ機能しますfalse

于 2012-12-27T15:18:37.157 に答える
1

Git は、何も変更する必要がないというひどい言葉遣いの警告にもかかわらず、あなたが望んでいることを正確に実行しています (その警告は、データベースではなく作業ディレクトリに何が起こっているかについてのみ話します)。

LF はリポジトリにのみ存在します。ファイルを rm して再度チェックアウトすると、作業ツリー (のみ) で CRLF に変換されます。

行末に関しては、ローカルコア設定/グローバル変数を変更しないでください(記事gitハブを参照)(autocrlfとの競合は見られません).gitattributeのみを使用すると言う人を見てきました。あなたの作業を投影します。それは新しい方法です。

ものをLFのみにしたい場合は、別のgit属性行を使用する必要がありますが、元の質問で得たものに固執する必要があります。(ドキュメント ページgithubページには、text eol=lfLF のみが必要かどうかが記載されているようです)

これはただ言うためのネクロポストです。心配しないでください:)

于 2014-10-07T03:32:44.873 に答える