6

WindowsLinuxの両方で使用されるソース リポジトリがあります。

Gitは自動的にEOLをローカル標準に変換することを知っています: Windows では\r\n、Linux では\nです。

これは、ソース ファイルの問題ではありません。

しかし、特定の EOL 文字 ( \r\n ) を変更すべきではない固定形式を使用するCSV ファイルがいくつかありますが、Git もそれらを変換し、一部のコードを壊します。

.gitignoreファイルの隣のルートに、次の内容の.gitattributesファイルを作成することで、CSV ファイルの EOL 変換を防止しようとしました。

*.csv    -text

私が理解したことを適用しました:http://git-scm.com/docs/gitattributes

しかし、Git はまだLinux で\r\n\nに変換しています。

auto.crlf のような別の設定で遊ぶ必要がありますか?

Linux ローカル リポジトリは継続的インテグレーション サーバー Jenkinsによって管理されているため、私はその制御を制限していることに注意してください。

ご意見ありがとうございます。

4

1 に答える 1

8

git は LF を EOL の内部表現として使用することに注意してください。

これは、あなたの場合、 *.csv ファイルが追加/コミットされたときに変更されたことを意味します。

したがって、ソリューションはおおよそ次のようになります。

  1. すべての *.csv ファイルを削除し、その変更をコミットします
  2. .gitattributes の編集、コミット
  3. すべての *.csv ファイルを追加し直して、再度コミットします

実際には、次のコマンドを使用して、すべてを 1 つのコミットで作成できます。

### ... update .gitattributes
git rm --cached '*.csv'
### ... find -name '*.csv' -print0| xargs -0 unix2dos
git add '*.csv'
git add .gitattributes
git commit

説明:

  • git rm --cachedすべての csv ファイルをインデックスから削除し、ディスクに残します。
  • ファイルにCRLF行末があることを確認します(unix2dos例として使用しています)
  • git add '*.csv'新しいバージョンの .gitattributes に従って、今回は変換せずにそれらを追加します
于 2014-01-27T10:15:05.637 に答える