2017-08-23 8 views
0

私はコーディングプロジェクトに取り組んでおり、SourceTreeとgitを使用して進捗状況を追跡しています。私はgitの基本を知っていますが、プロジェクトのファイルを変更、追加、または削除するたびに、SourceTreeのコミットボタンを使用して変更をコミットします。SourceTree - 前にコミットされたANSIエンコードファイルを比較するようにgitを設定します。

私は過去のある時点で、ソースコードファイルの1つに誤ってNUL文字が含まれていることを発見しました。このファイルが保存されると、そのエンコーディングは自動的にUTF-8からANSIに変更されました。私はその時点でこれらの変更に気付きませんし、ファイルをコミットしました。間違ったファイルのエンコーディングに気付く前に、私はもう少しコミットしました。

今はファイルエンコーディングをUTF-8に戻して、ファイルを再度コミットしました。今私は、このコミットからの変更を順調に見ることができます。しかし、SourceTreeは、ファイルにANSIエンコーディングがある間は、以前のすべてのコミットの変更を表示しません。

これを解決する方法を探して、this answerthis answerに従って.gitattributesファイルを変更しようとしましたが、SourceTreeは変更を表示することをまだ拒否しています。

私はまた、this answerに従ってgit differentを変更することができますが、その変更をどのように統合するのか分かりませんので、SourceTreeは以前の変更を表示できます。

私の質問:gitがANSIエンコーディングをサポートするようにファイルをdiffする方法はありますか?また、すべてのファイルをutf-8に自動的に変換するので、以前のコミットのSourceTreeの変更を再度見ることができますか?

答えて

0

解決策を見つけました。リポジトリ.gitattributesファイルで

追加:

グローバル .gitconfigファイル追加で
ProblemFile.c  diff=utf16_diff 
ProblemFile.c  set diff 

[diff "utf16_diff"] 
    textconv = "iconv -f utf-16 -t utf-8" 

を今すぐSourceTree正しく以前のすべてのコミットを示しています!

関連する問題