私はgitがどの操作でも行末を変更しないようにしています。残念ながら、それはどうでもいいようです。私はそれを次のテストケースに減らしました。テストケースには、この動作を無効にするためのさまざまなメカニズムがありました。
- 2台のマシンから始めます(Windowsコンピューター= A、Linuxコンピューター= B)
- 両方のマシンで:
git config --global core.autocrlf false - 両方のマシン:(
git config --global core.eol crlf念のため)
- Aに新しいリポジトリを作成します。空のフォルダから:
git init --shared(その後、作成した.gitディレクトリを再表示します).gitignoreリポジトリに新しいファイルを作成する.gitattributes1行でリポジトリに新しいファイルを作成します。* -textgit add .、それからgit commit -m "initial commit"回避するために、例えばこれ。git branch master_recv- リモコンを追加
document.txtCRLFを含むリポジトリに新しいファイルを作成する- コミット:
git add -A、次にgit commit -m "<something>" - Aには
document.txtまだCRLFが含まれていることに注意してください(それを削除してからリセットすると--hard、CRLFが残っているバージョンが返されます)。
- ディレクトリ全体をコンピュータBにSCP
- 新しいファイルを追加
new fileCRLFを含むを - コミット:
git add -A、次にgit commit -m "<something>" - B
document.txtとBのnew file両方にまだCRLFが含まれていることに注意してください
- BのマスターをAにプルします。
git pull <remote> master:master_recv - A
document.txtはLFに変更されました。追加されたファイルnew fileにはLFも含まれます。
BがWindowsマシンの場合、問題は発生しません。


core.autocrlf、常に falseをされていますか?\nリポジトリにすでに行末があるようですね?リポジトリを作業ディレクトリに変更する設定はありません。\n\r\n