2026年2月20日

Gitの小ネタ: .git/info/exclude と安全なforce push

最近運用を見直す機会があったgitの小ネタ

.git/info/exclude で個人的なファイルを管理

.git/info/exclude に書いたパターンは、.gitignore と同様に無視されるが、リポジトリにはコミットされない。
そのため「自分だけで使う補助スクリプト」を置きたいときに使いやすい。

例えば、チーム全体に配るほどではないローカル自動化(試作ツール、検証用スクリプト)を置く用途には相性が良い。

一方で注意点もあって、 ローカル限定の運用に寄せすぎると、他の開発者や自動化ツールから存在が見えにくくなり、再利用しづらい。
ある程度運用が安定しそうならcommitした方がいい。

このため実運用では、次のように使い分けると扱いやすい。

  • 個人だけで完結するスクリプト: .git/info/exclude
  • ある程度継続利用する個人用ツール: リポジトリ外の個人スクリプトディレクトリ
  • チームで再利用する可能性があるもの: リポジトリ内に置いて明示的に管理

git push -f より安全な強制プッシュ

履歴を書き換えた後の push で -f を使うと、他人の更新を上書きしてしまう事故が起きやすい。
基本は次のオプションを使う方が安全。

  • --force-with-lease
  • --force-if-includes

参考:

毎回付け忘れるのを避けるなら、グローバル設定で有効化できる。

git config --global push.forceWithLease true
git config --global push.forceIfIncludes true