🔥
使わなくなった古いリモートブランチは削除してしまおう
はじめに
Gitでは作業ごとにブランチを切るのが一般的です。
作業の進捗を記録しておくために、途中でもgit pushしておくことも多いと思います。
しかし、作業の中断や方針変更があった場合、あるいはPull RequestがマージされずにCloseされた場合など、リモート上に古いブランチがそのまま残ってしまうことがよくあります。
私の配属されているプロジェクトでは、リモートブランチが大量に残っていて混乱していたため、「一定期間更新のないブランチをまとめて削除するスクリプト」を作りました。
130 Branches !?
git for-each-ref
git for-each-refブランチのリファレンス情報を取得できるコマンドです。
以下のように実行すると、各ブランチの最新コミットハッシュが表示されます。
❯ git for-each-ref
ecfe8ce8a9bf9c77f877c69023947eecfb0d3da3 commit refs/heads/hoge
74cf3ca49bac9372459c5febc23425df0e33fdd9 commit refs/heads/fuga
1a0f39170ff52c4560531b7084d13a6da302343d commit refs/heads/piyo
今回のスクリプトでは以下のように使っています:
git for-each-ref --format='%(refname:short)|%(committerdate:iso8601)' refs/remotes/origin
-
--format-> 出力形式を指定 -
%(refname:short)-> ブランチ名 -
%(committerdate:iso8601)-> 最終コミット日時(ISO8601形式) -
refs/remotes/origin-> リモートブランチ一覧を対象にする
これにより、すべてのリモートブランチとその最終更新日時を一括で取得できます。
使い方
# 31日以上更新されていないリモートブランチを確認
./delete-old-remote-branches.sh
# 60日以上
./delete-old-remote-branches.sh 60
まとめ
プロジェクトのリモートブランチがスッキリしました。
皆さんリモートブランチが増えないよう何か工夫はされていますか?
Discussion