Skip to content

Instantly share code, notes, and snippets.

@mizdra
Last active October 1, 2021 05:02
Show Gist options
  • Save mizdra/6dd1a3952d2f21573b6b83eaf9b2e949 to your computer and use it in GitHub Desktop.
Save mizdra/6dd1a3952d2f21573b6b83eaf9b2e949 to your computer and use it in GitHub Desktop.
リモートリポジトリとブランチを良しなに同期してくれる君
#!/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
@mizdra
Copy link
Author

mizdra commented Sep 25, 2021

@mizdra
Copy link
Author

mizdra commented Sep 25, 2021

よく打つので alias sy=git-sy して使ってる

@mizdra
Copy link
Author

mizdra commented Sep 25, 2021

git gone -pd、かなりナイーブにみえるけど、思いの外期待通りに動いて便利。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment