ファイル内容は同じなのに Git が差分を検出する問題を .gitattributes で解決した話
はじめに
Git で開発をしていると、「ファイルの内容は変えていないのに差分が出てしまう」という現象に出会うことがあります。
今回は Access の Git 管理にトライしている時に発生しました。
(こちらの記事参照)
実際には内容が変わっていないのに Git が変更として扱ってしまい、コミット時には “No content changes found” が大量に表示される状態でした。
(1000件中950件がそのファイル、みたいなことも発生して、変更差分が全然わからない)
最終的に、.gitattributes を設置することで解決したので
この記事ではその原因と対処法をまとめます。
“No content changes found” が出る主な原因
Git が差分として扱う理由の多くは、改行コード(EOL: CRLF / LF)の違いのようです。
加えて、今回のような Access のエクスポートファイルでは「文字コードの違い」「BOM の有無」など Access 特有の要因も発生します。
内容が同一でも、これらが一致しないと Git は「別ファイル」とみなしてしまい、結果的に “No content changes found” が大量に発生してしまいます。
.gitattributes を置いたら解決した
今回設置した .gitattributes の内容はこちらです。
# Access本体ファイルはバイナリ扱い(差分を取らない)
*.accdb binary
*.mdb binary
*.laccdb binary
# テキストファイルは OS に応じて自動で改行を処理
* text=auto
# .frm ファイルもテキストとして扱う
*.frm text
# vbac.wsf はエクスポート時に含めない
vbac.wsf export-ignore
# bin フォルダは管理外
/bin/特にこの部分
* text=autoこれを設定すると、
• コミット時 → Git が自動的に改行を正規化
• チェックアウト時 → OS の改行コードで展開
という動作になり、改行の違いによる無駄な差分が発生しなくなるようです。
.gitattributes を設置してコミットし、その後 Access のエクスポートを行うと
“No content changes found”のファイルが変更差分に出てしまう問題が解消され
意味のある変更差分だけが確認できるようになりました。
感想
今回の問題解決にあたって
.gitattributes というファイルの存在を知ることが出来てよかったです。
このカテゴリの最新記事
2023.09.04
2025.09.10
2023.04.21
2023.04.19