Git EOL変換を無効にする 質問する

Git EOL変換を無効にする 質問する

私は、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 が含まれていることに注意してください (これを削除してリセットすると、--hardCRLF がまだ含まれているバージョンが返されます)

  • ディレクトリ全体をコンピュータBにSCPする
  • new fileCRLFを含む新しいファイルを追加する
  • コミット: git add -A、その後git commit -m "<something>"
  • Bdocument.txtとBのnew file両方にCRLFが含まれていることに注意してください。

  • B のマスターを A にプルします。git pull <remote> master:master_recv
  • A がdocument.txtLF に変更されました。追加されたファイルnew fileにも LF が含まれています。

B が Windows マシンの場合、問題は発生しません。

ベストアンサー1

簡単な解決策は1つです。

  • core.autocrlfがfalseに設定されていることを確認してください全てリポジトリ:
    git config --global core.autocrlf false
    • Git 2.16 (2018年第1四半期) 以上、 走るgit add --renormalize .
    • それ以外の場合は、リポジトリを再クローンし、EOL 変換が行われていないことを確認します。

自動的に変換が行われる場合、それは.gitattributes core.eol指令リポジトリ内に存在します。

Git 2.8+ (2016 年 3 月)、eol 変換がまだあるかどうかを確認します:

git ls-files --eol

おすすめ記事