LoginSignup
2
0

More than 1 year has passed since last update.

Gitリポジトリを古いAWSアカウントから新しいAWSアカウントへ移行する

Last updated at Posted at 2021-11-29

Goal

AWS CodeCommitに既にあるGitリポジトリを古いAWSアカウントから新しいAWSアカウントへ移行する際の手順を示します。

Authoring Guidelines

  • AWS CodeCommitに限らず、GitHubからAWS CodeCommitへの移行、GitHubからGitHubへの移行でも、読み替えによって手順の大筋が把握できるようにAWS Management ConsoleとGitコマンドでの手順で主な流れを記載します。
  • 自動化のため、将来的にAWS CodeCommitのAPIをコールするAWS CLIによる手順も追記する予定です。

References

本文の手順は、次の文書を参考に作成しました。

Pre-Requisites

本文の手順は、次の環境で実施、検証しました。

  • Windows 10, build 19043.1348

How To

新しいリポジトリを作成する

次の任意の手段で、新しいリポジトリを作成します。

  • AWS Management Console
  • AWS CLI
  • AWS CloudFormation

古いリポジトリの内容を新しいリポジトリへ反映する

[!IMPORTANT]
この手順では、一度もコミットされていない新しいリポジトリへ古いリポジトリの内容を移行します。既に何らかのコミットがなされている新しいリポジトリへ古いリポジトリの内容を増分移行する手順ではありません。

古いリポジトリのベアリポジトリをローカルに作成し、古いリポジトリの内容を新しいリポジトリへ反映します。

git clone --mirror %OLD_REPOSITORY_PATH%
CD %OLD_REPOSITORY_NAME%.git
git push %NEW_REPOSITORY_PATH% --all
git push %NEW_REPOSITORY_PATH% --tags

[!IMPORTANT]
git push --all だけではタグが反映されないため、別途 git push --tags を実行する必要があります。

成功したら、ローカルに作成した古いリポジトリのベアリポジトリを削除します。

CD ..
RD /S %OLD_REPOSITORY_NAME%.git

新しいリポジトリのデフォルトブランチ名を変更する

BLM後の世界情勢に合わせて、新しいリポジトリのデフォルトブランチ名を "master" から "main" へ変更します。
新しいリポジトリをローカルへクローンし、ローカルリポジトリでブランチ名を変更します。

git clone %NEW_REPOSITORY_PATH%
CD %NEW_REPOSITORY_NAME%
git branch -m master main

ローカルリポジトリでブランチ名変更により作成したmainブランチをリモートリポジトリに反映します。

> git push -u origin main
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
To %NEW_REPOSITORY_PATH%
 * [new branch]      main -> main
Branch 'main' set up to track remote branch 'main' from 'origin'.

次の任意の手段で、新しいリポジトリのディフォルトブランチを "master" から "main" へ変更します。

  • AWS Management Console
  • AWS CLI

ローカルリポジトリでブランチ名変更により削除したmasterブランチをリモートリポジトリに反映します。

> git push origin --delete master
To %NEW_REPOSITORY_PATH%
 - [deleted]         master

[!IMPORTANT]
ディフォルトブランチを "master" から "main" へ変更せずにmasterブランチの削除をリモートリポジトリに反映しようとすると、エラーにより失敗します。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0