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
参考:
- https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-with-lease
- https://git-scm.com/docs/git-push#Documentation/git-push.txt---force-if-includes
毎回付け忘れるのを避けるなら、グローバル設定で有効化できる。
git config --global push.forceWithLease true
git config --global push.forceIfIncludes true