webdevqa.jp.net

gitが文字エンコードを混乱させる原因は何ですか?

編集:gitは文字エンコードを混乱させません。これは、知識を共有し、他の人が同じ過ちを犯さないようにするために、まだここにあります。


コンテキスト:私の企業はsvnリポジトリを使用しています。このリポジトリと対話するためのクライアントとしてgit-svnを使用しています。プロジェクト内のすべてのテキストファイルは、Windowsのデフォルトエンコーディング(cp -....)でエンコードされています(エンコードする必要があります)。私はgit-extensionsを使用し、時にはコマンドラインを使用してgitをパイロットします。

私がしたこと:過去3日間、私は新しい機能に取り組んでおり、いくつかのローカルコミットを行いました。最後に、インタラクティブなリベースを使用して、これらすべてのコミットを1つにまとめ、次にgit svn dcommitを使用して、1回のコミットでsvnリポジトリ上のすべてをプッシュしました。

その後何が起こったのか:同僚が、私が変更したファイルとコミット後の新しいファイルですべてのアクセントが台無しになっていると言いました。以前にgit + svnをインストールしたときに、同じリポジトリにアクセント付きのテキストファイルをコミットしましたが、この問題に直面するのはこれが初めてです。

私の調査:私は調査するために次のことをしました:notepad ++でファイルを開き、それらを表示するために最新のエンコーディング(WindowsのデフォルトとUTF-8を含む)を試しました:それらのどれもアクセントを正しく表示できませんでした、および異なるアクセントは、常に同じシーケンスの奇妙なグリフによってレンダリングされます。

一時的な回避策:私はすぐにgit拡張機能を使用して復帰コミットを作成し、それを「コミット」しました。

質問:私のエンタープライズsvnリポジトリは問題ありませんが、解決すべき次の2つの問題があります。

  1. アクセントのある文字で何が起こったのかを理解する
  2. SVN履歴から自分の作業を取得し、適切な方法でコミットします(可能であれば、アクセント付きのすべての文字を手動で確認せずに)

誰かがいくつかの手がかりを提供できますか(私はgitにかなり慣れていません)?

21
Samuel Rossille

そして今、痛い真実を明らかにしましょう(gitユーザーではなく私のエゴにとって痛いです):gitではなくアクセントを台無しにしました。

Gitがアクセントを台無しにする可能性があると誤解している質問を削除することもできましたが、賛成票の数を考えると、多くの人が私と同じ間違いをしていると思うので、私は自分の質問に答えることを選びました真実を確立し、同じ場合に人々を助けるために:

  1. Gitは改行以外の文字には触れません。
  2. アクセントを壊しましたbeforeコミットしましたが、十分な注意を払っていなかったため、気づきませんでした。そうするために、私はEclipseでいくつかのファイルを編集しました。 Eclipseはエンコーディングを認識せず、アクセントはすべて保存時に奇妙なバイトシーケンスに置き換えられました。それで全部です。

この問題を調査する方法を教えてくれた Dmitry Pavlenko に改めて感謝します。

「gitreflog」への+1

ハッピーアクセント修正; =)

25
Samuel Rossille