Last active
October 1, 2021 05:02
-
-
Save mizdra/6dd1a3952d2f21573b6b83eaf9b2e949 to your computer and use it in GitHub Desktop.
リモートリポジトリとブランチを良しなに同期してくれる君
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env bash | |
# usage: git sy | |
set -e | |
# run に渡されたコマンドを実行しつつ、コマンドの名前をログに出力する | |
run() { | |
echo -e "\e[1m+$@\e[0m" | |
"$@" | |
} | |
# まず origin に存在するすべてのブランチを fetch してくる | |
run git fetch --all | |
# カレントブランチのトラッキングブランチがある時 | |
if TRACKING_BRANCH=$(git rev-parse --quiet --abbrev-ref --symbolic-full-name @{upstream} 2>/dev/null); then | |
# トラッキングブランチに変更があればそれを取り込む | |
run git merge --ff $TRACKING_BRANCH | |
fi | |
# 以下の操作を順々に行う | |
# 1. origin から削除されたリモートブランチをローカル上から削除する (prune) | |
# 2. トラッキングブランチが存在せず、既に HEAD にマージされているローカルブランチを削除する | |
run git gone -pd |
よく打つので alias sy=git-sy
して使ってる
git gone -pd
、かなりナイーブにみえるけど、思いの外期待通りに動いて便利。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
required: https://eed3si9n.com/ja/git-gone-cleaning-stale-local-branches