Ubuntu 14.04 linuxのgit repoにバイナリファイルを追加してGitHubリモートにプッシュし、 OS XおよびWindows 10のgit status
では、タッチされていなくても変更されたファイルの一部が表示されます。それはgit reset --hard
とgit checkout
の後でも変更されたものとして表示し続けます。'git status'は、バイナリファイルが変更されていないときとファイルモードが同じであるときに変更したものを表示する理由
注:私はこれらのファイルでGit LFS(Large File Storage)を使用しています。ここで
が変更とのみ1ファイルが示しOS X上のgit diff
からの出力は次のとおりです。
Marks-MacBook:KTX mark$ git diff other_lib/linux/Release-x64/libSDL2main.a
diff --git a/other_lib/linux/Release-x64/libSDL2main.a b/other_lib/linux/Release-x64/libSDL2main.a
index 4202f6f..2797199 100644
Binary files a/other_lib/linux/Release-x64/libSDL2main.a and b/other_lib/linux/Release-x64/libSDL2main.a differ
と
Marks-MacBook:KTX mark$ git diff --raw other_lib/linux/Release-x64/libSDL2main.a
:100644 100644 4202f6f... 0000000... M other_lib/linux/Release-x64/libSDL2main.a
ファイルが.gitattributes
で-text
をマークされているので、すべての問題があってはなりませんEOLマーカーで。何が別のsha1結果とgit diffがバイナリファイルを違うと報告する原因になるのでしょうか?
私はbin
がtextconv = hexdump -v -C
を使用しています*.a
ファイルに対して.gitattributes
にdiff=bin
を追加しました。この後、git diff
は差異は報告されていませんが、git status
は修正されたファイルをまだ示しています。
追加のテストとして、元の.aファイルをlinuxからOS Xにコピーし、diffを使用してgit作業ツリーのコピーと比較しました。彼らは同じです。 linux repoクローンのgit status
は、コピーした作業ツリーファイルが変更されていないことを報告します。
提案がありますか?
以下は、もはや真実ではありません。私の答えに記載されているようにレポが修正されました。
自分で試すことができます。レポ&ブランチはGitHubのhttps://github.com/KhronosGroup/KTX/tree/incomingにあります。 OS Xの問題を示すファイルはother_lib/linux/Release-x64/libSDL2main.a
です。他の.a
ファイルには、other_lib/linux
のファイルに問題はありません。
Windowsでは、Linux上のシンボリックリンクを含むいくつかのファイルが変更されて表示されます。私はOS Xのケースに集中したいと思っています。
MacとWindowsホストで正しくgit-lfsを設定しましたか? –
これはアクセスリグに関係するかもしれません: http://stackoverflow.com/questions/1580596/how-do-i-make-git-ignore-file-mode-chmod-changes –