質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

Q&A

解決済

5回答

17280閲覧

GitHub上で、プログラムコードがバイナリファイルと認識されてしまいdiffがみられない

syusuke9999

総合スコア13

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

GitHub

GitHubは、Gitバージョン管理システムを利用したソフトウェア開発向けの共有ウェブサービスです。GitHub商用プランおよびオープンソースプロジェクト向けの無料アカウントを提供しています。

0グッド

0クリップ

投稿2015/07/29 05:02

メタトレーダー4のEA(自動売買プログラム、拡張子はmq4)をGitHubで管理しようと思い、Git Bashを使い、エディターで編集したプログラムをGitHub上のプライベートリポジトリをリモートリポジトリとして、Pushしたのですが、ファイルによってバイナリーファイルと認識されているようでDiffを見ることが出来ません。
元々付属していたサンプルのmq4ファイルはテキストファイルとして認識され、diffを見ることが出来ます。
自分で作成したmq4ファイルも場合によってはテキストファイルとして認識され、Diffがみられることもあるのですが、どうしてテキストファイト認識されたり、バイナリファイルと認識されたりと、挙動が変わるのかが分かりません。

ネット上では、Nullコードが入っているとバイナリエディタと見なされる事があるなどの指摘もありましたが、自分の調べかたが甘いのか、Nullコードが入っているようには見えません。
日本語の文字列がコメントなどの形で入っていると、バイナリファイルとして認識される確率が高くなるような気がします。

どのような基準でテキストファイルをバイナリファイルと認識しているのか、テキストファイルとして認識させてDiffがみられるようにするにはどうすればよいか、どなたかのお知恵を拝借したく質問させていただきます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答5

0

ベストアンサー

バイナリとテキストの判定は面倒な問題のようですね.
少し気になったのは,文字コードに何を使っているかということです.
バイナリと判定されるものとテキストと判定されるファイルが,
それぞれどのような文字コードを使っているのか,調べていただけますか.
もしかしたら,文字コードを変えれば解決するかもしれません.

投稿2015/07/29 06:13

KenTerada

総合スコア751

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syusuke9999

2015/07/29 08:03

こちらでエンコード形式を変換しながら試したところS-JIS形式だと、文字化けせずテキストファイルとして扱われるようです。
KenTerada

2015/07/29 08:11

お力になれて良かったです.
guest

0

.gitattributes で

*.mq4 text

とかすれば大丈夫では? と思ったのですが、下記によるとダメそうです。

git - Make github use .gitattributes "binary" attribute - Stack Overflow

GitHub doesn't use .gitattributes files for choosing which files to show in a diff, so it's not possible to get around this that way.

どうやら github/linguist で自動判定していそうです。

投稿2015/07/29 05:41

ngyuki

総合スコア4516

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syusuke9999

2015/07/29 05:59

ありがとうございます。参考になります。
guest

0

下の解決方法に統一しました。

投稿2015/07/29 08:09

編集2016/03/23 04:39
syusuke9999

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

UTF-8にエンコードに変換してGitHubへadd commit Pushする。
UTF-8のままではMT4で文字化け(パラメーターの説明を含めて)してしまうため、必ずS-JISに直す。

投稿2015/07/29 08:05

編集2016/03/23 04:40
syusuke9999

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

どうしても解消できないようでしたら、テキストで認識される拡張子(.txtとか)にして、gitのフック機能をつかって

  • チェックアウト時に拡張子txt→mq4にコピー
  • コミット時に拡張子mq4→txtにコピー

みたいな荒業でそれとなく運用できるかもしれません。この2つだけではたぶん完全ではないので他のフックもかませる必要があると思います。編集してはいけない方はchmodでリードオンリーにしておくといいかも。

Git - Git フック
How to run bash script after git push

投稿2015/07/29 06:27

sharow

総合スコア1151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syusuke9999

2015/07/29 08:03

ありがとうございます。参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問