1. ホーム
  2. ギット

[解決済み】git filter-branchで行末を修正しようとしたがうまくいかない

2022-04-01 10:18:05

質問

gitのWindows/Linuxの改行コードの問題に悩まされています。 GitHub や MSysGit などの情報源によると、最良の解決策は、ローカルのリポジトリで linux 風の改行コードを使用するように設定し、その上で core.autocrlftrue . 残念なことに、私はこれを十分に早い段階で行わなかったので、今では変更を加えるたびに行末がおかしくなっています。

答えを見つけたと思ったのに こちら が、私にはうまくいきません。 私のLinuxのコマンドラインの知識はせいぜい限られているので、彼のスクリプトの中で "xargs fromdos" 行が何をするのかさえよくわかりません。 そのようなファイルやディレクトリは存在しないというメッセージが出続け、既存のディレクトリを指定しようとすると、パーミッションがないと言われます。

WindowsのMSysGitとMac OS Xのターミナルで試しました。

解決方法は?

の git ドキュメントを参照してください。 gitattributes は、プロジェクト内のすべての行末を修正または正規化するための別のアプローチについて説明しています。 以下はその要点です。

$ echo "* text=auto" >.gitattributes
$ git add --renormalize .
$ git status        # Show files that will be normalized
$ git commit -m "Introduce end-of-line normalization"

を行うべきでないファイルがある場合 git statusに正規化されたものが表示されます。 テキスト属性を解除してから git add -u を実行します。

manual.pdf -text

逆に、git が認識しないテキストファイルは を検出しない場合、正規化することができます。 を手動で有効にします。

weirdchars.txt text

これは、新しい --renormalize フラグは、2018年1月にリリースされたgit v2.16.0で追加されました。 古いバージョンのgitの場合、もう少し手順があります。

$ echo "* text=auto" >>.gitattributes
$ rm .git/index     # Remove the index to force git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"