【Git】リポジトリを別のGitに移行するシェル

■ はじめに

小ネタ。

https://dk521123.hatenablog.com/entry/2022/02/10/000000

でやったリポジトリを別のGitリポジトリに移動する作業があり、
そのリポジトリ数が、まーまーあって、
今後も同じようなことをやる可能性がありそうなので
シェルスクリプト化してみた

目次

【1】前提条件
【2】サンプル

【1】前提条件

[1] 移動元・先でのアクセス権

[2] 移動先のリポジトリは、事前に作っておくこと
 => ここも含めてシェルスクリプト化してもいい(「※補足」参照)のだが、
  とりあえず、今回は手動で、、、

※補足:GitHubリポジトリをコマンドから作成するには

* 以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2023/02/16/225023

【2】サンプル

引数で、転送元・先のURLをもらってって実装より
スクリプトを修正した方が利便性がいいと思ったので、
そうやって作った。
 => スクリプト内のコメント「!! Change ...」部分を修正する

なお、「[2] 移動先のリポジトリは、事前に作っておくこと」も
含めてシェル化したバージョンは以下の関連記事を参照のこと。

https://dk521123.hatenablog.com/entry/2023/02/16/225023

move_git.sh

#!/bin/bash

# !! Change your source repository URLs
declare -a source_repo_list=(
  "https://github.com/your-account/your-repo-1.git"
  "https://github.com/your-account/your-repo-2.git"
  "https://github.com/your-account/your-repo-3.git"
)

for source_repo in ${source_repo_list[@]};
do
  echo "**** Start to copy ${source_repo} ****"

  # Step1: Git Clone with mirror option
  git clone --mirror ${source_repo}

  # Step2: Move to repository directory
  source_repo_name=$(basename ${source_repo})
  echo "Repository name: ${source_repo_name} (e.g. your-repo-1.git)"
  cd ${source_repo_name}

  # Step3: Git push with mirror option
  # !! Change your destination repository URL. 
  destination_git_url="https://github.com/destination/your_${source_repo_name}"
  echo "Move to ${destination_git_url}"
  git push --mirror ${destination_git_url}

  cd ..

  echo "**** Done for ${source_repo_name} ****"
done

echo "DONE..."

関連記事

Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
リポジトリを別のGitに移行するには
https://dk521123.hatenablog.com/entry/2022/02/10/000000
GitHubリポジトリをコマンドから作成する
https://dk521123.hatenablog.com/entry/2023/02/16/225023