既存のすべてのBitbucketリポジトリをGithubに移行するためのシェルコマンド

2020-01-11Bash, Git

はじめに

GitHub で無制限にプライベートリポジトリを作成できるようになったため、今まで Bitbucket で管理していた自分のリポジトリを Github に移行しました。

大したコマンドではないのですが、移行のために実行したコマンドを共有します。

検証環境

$ uname -moi
x86_64 MacBookPro10,1 Darwin

$ bash -version | head -n 1
GNU bash, バージョン 5.0.11(1)-release (x86_64-apple-darwin18.6.0)

$ hub --version
git version 2.24.0
hub version 2.13.0

前提条件

コマンドラインから Github を操作するためのコマンドである github/hub がインストールされていることが前提となります。

実行コマンド

以下のコマンドを、 git clone した作業ディレクトリが配置されているディレクトリ配下で実行します。
.git ディレクトリを探し出し、自動的に Github 上にリポジトリを作成していきます。

$ find . -type d -name .git \
  | while read GIT_DIR; do

    # .gitディレクトリが置かれているディレクトリに移動
    cd "$(dirname "${GIT_DIR}")"

    # 設定済みのリモートブランチを一度削除
    git remote rm origin

    # github上にプライベートリポジトリを作成
    hub create -p

    # 早すぎると作成したばかりのgithubリポジトリにpushできないことがあるので気持ち待つ
    sleep 3

    # push
    git push -u
  done

ひとこと

このあと、 ghq コマンドを使ってすべてのリポジトリを取得してきましたがまた機会を見てそのコマンドも掲載します。

2020-01-11Bash, Git