1

Github のリポジトリに保存されているいくつかの CSV ファイルを共同で編集している他の数人と協力しています。Windows、OS X、および Linux を使用している共同作業者がいるため、行末とローカル Git 設定の違いに対処するために、次の .gitattributes ファイルを追加しました。

* text=auto

人々は Excel を使用してこれらの CSV ファイルを編集し、保存してコミットしています。コミット時に、ファイルに行末がまったくないように見えることがあります。行はキャリッジ リターン (\r) で終了します。Github はこれらのファイルを 1 つの大きな行として認識し、ファイル全体が削除されて 1 つの長い行に置き換えられたと見なします。このようなコミットの例を次に示します。

https://github.com/weecology/neonetods/commit/7e10cb2913ca2e214c49944b4856519cab9bad96

ファイルをチェックアウトすると、各行が \r で終わっていることがわかります。これは、Mac と Windows の両方で Excel でファイルを編集して保存しただけで、2 人に発生しました。

これにより、競合があってはならない場所で競合が発生し、各ファイルの出所を追跡することが難しくなっています。これがどのように発生するのか、またはどのように解決できるのか、誰にもわかりませんか?

4

1 に答える 1

2

この人:

git と CR と LF (CRLF ではない)

同様の問題がありました。解決策はフィルターを使用することでした。これは、フィルター定義を .git/config に追加する必要があるため不便ですが、問題は解決するはずです。

使用する適切なフィルターを見つけるのに長い時間がかかりましたが、これは次のとおりです。

clean = LC_CTYPE=C awk '{printf(\"%s\\n\", $0)}' | LC_CTYPE=C tr '\\r' '\\n'

...それが最終的に誰にとってもうまくいったものです。\r\n を \n に置き換え (\r\n が \n\n にならないように)、次に \r を \n に置き換え、Mac で tr を使用するときに発生する奇妙な文字エンコーディングの問題を処理します。 .

于 2012-07-17T23:05:58.747 に答える