最近他の方のリポジトリをforkして、remoteにoriginとは別に upstream としてfork元のリポジトリをセットすることが多く、
git remote add upstream git@github.com:<fork元user/fork元リポジトリ>
みたいに追加することが多いのですが、毎回これを打つのが面倒だったので、
“自分のuser名/リポジトリ名”
だけで、 upstream を設定するスクリプトを書いてみました。
準備するもの
- もちろんgit
- jq
関数を追加する
以下の関数を.zshrc
とかに記述します。
git-remote-add-upstream() {
if ! type jq > /dev/null 2>&1; then
echo "'jq' is not installed." >&2
exit 1
fi
if [ $# -ne 1 ]; then
echo "Need repo name. e.g : 'user/repo'"
exit 1
fi
local upstream=$(curl -L "https://api.github.com/repos/$1" | jq -r '.parent.full_name')
if [ "$upstream" = "null" ]; then
echo "upstream not found." >&2
exit 1
fi
git remote add upstream "git@github.com:${upstream}.git"
}
alias grau='git-remote-add-upstream'
これで、 grau user/repo
を入力することで、Github APIを叩いて取得したリポジトリの中から、
fork元のuser/repo
を取得して、git remote add upstream
を実行します。
jqが入っていなかったり、user/repo
が指定されていなかったり、APIでfork元が取得できなかった場合などは処理を中断するようにします。
あの長ったらしいコマンドを4文字に縮められたので個人的には満足しています。