24

免責事項: Git とは、「私」がめちゃくちゃになったことを意味します。

先ほど、バイナリ ファイルと見なされるをgit-gui示したいと思いました。diff

だから私は自分にいくつかの変更を加えました.\.gitattributes

*.ini       text
*.inc       text

しかし、うまくいきませんでした。 それから私は私のにいくつかの変更を加えました.\.git\info\attributes

*.ini       text
*.inc       text
*.inc crlf diff
*.ini crlf diff

そしてそれはうまくいきました。

しかし、以前のコミットに戻ると、めちゃくちゃになります...

漢字 これはどのように見えるべきかです: 英字

すべてのファイルで発生するわけではありません。編集:特殊文字を含むファイルでのみ発生します。

Q: コミット自体の問題ですか、それとも設定の問題ですか?
Q:回復できますか?

4

4 に答える 4

8

最近、同様の問題がありました。.gitattributesルート レベルにプロジェクト全体のファイルがあり、次の行が含まれています。

* text=auto
*.sql     text

私たちのチームの 1 人は、SQL Management Studio を使用して SQL コードを作成していましたが、彼には知られていませんが、ファイルを UTF-16 として保存していました。彼は問題なくコードを Git にチェックインできましたが、チェックアウト時にコードはこの投稿で説明されているように漢字に変換されました。

問題のファイルの 16 進ダンプにより、問題が実際に 0x000A から 0x000A0D への変換であることが確認されました。

私たちにとっての解決策は、以下を使用してファイルを ASCII に変換することでした:-

  1. 問題のあるファイルを作業ディレクトリから削除します
  2. ローカル ディレクトリに一時.gitattributesファイルを作成して、行末変換を実行せずに git に強制的にファイルをチェックアウトさせます。たとえば、次の行を含めます*.sql binary

  3. Git からファイルをチェックアウトします。ファイルが翻訳されておらず、漢字が含まれていないことがわかります。

  4. ファイルを ASCII に変換します。これには Notepad++ を使用しましたがiconv、Git For Windows の一部としてインストールされる を使用することもできます。ファイルに非ASCII文字が含まれている場合、UTF-8もオプションになると思いますが、これは私たちの目的には必要ありませんでした.
  5. ファイルの ASCII バージョンをチェックインする
  6. ローカル.gitattributesファイルを削除する
于 2016-05-09T15:45:07.620 に答える