3

Ubuntu を使用すると、すべてのファイルが Git でステージングされなくなります。

を実行するgit diffと、Git は次のように表示します。

--- a/<filename>
+++ b/<filename>
-<output of file>
+<output of file>

例えば、

--- a/.gitignore
+++ b/.gitignore
-.tmp
-build
-node_modules
+.tmp
+build
+node_modules

ただし、Windows で Git を使用すると、Git はステータスを適切に表示します (すべてのファイルがコミットおよびステージングされます)。

これを修正する方法のアイデアはありますか?

Ubuntu と Windows の両方で Git リポジトリと同じパーティションを使用しています。これは FAT32 であるため、Ubuntu は自動的にパーティションをマウントします。

4

1 に答える 1

3

これは CRLF の問題のようです。Windows は CRLF を使用して行末を示しますが、Linux は LF のみを使用します。Git はネイティブで LF のみを使用します。Windows から Linux に切り替えると、git はファイルが変更されたと見なします。これは、すべての行を終了する CRLF を LF に変換する必要がないと考えているため、ファイルに余分な CR 文字が含まれているためです。

このテーマに関する広範な議論については、このブログ投稿を参照してください。

これはすべてcore.eol構成オプションによって制御されます。通常、これは に設定されnative、OS の EOL 規則を使用するように git に指示します。あなたの最善の策は.gitattributes、投稿が指定するようにファイルを作成し、OS に関係なく LF を使用するように指示することです。

于 2013-08-28T06:11:54.647 に答える