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