LoginSignup
3
1

More than 1 year has passed since last update.

GitリポジトリをGitHubに移行する手順(Gitコマンド編)

Posted at

1.移行元のリポジトリURLをコピーする

移行元リポジトリにある.gitで終わるURLをコピーします。
コピーしたURLはSOURCE_REPOSITORY_URLと呼びます。

2.移行先のリポジトリURLをコピーする

移行先のGitHubリポジトリを作成します。
.gitで終わるURLをコピーしておきます。コピーしたURLはDESTINATION_REPOSITORY_URLと呼びます。

3.複製元リポジトリのベアクローンを作成する

Gitコマンドで複製元のリポジトリをクローンします。
このローカルリポジトリは移行後に削除するので、保存場所を気にする必要はありません。

git clone --bare <SOURCE_REPOSITORY_URL>

--bareオプションを付けると、ソースコードがなく、更新履歴やブランチ状態などを保持しているリポジトリを作成できるようです(--mirrorでもほぼ同じ?)。
新規ターミナルで実行すると、ルートディレクトリ(~)に<user-name>/<SOURCE_REPOSITORY_URL>が作成されます。

XXX@XXX.git.backlog.jp:/project-name/old-repository.gitならold-repository.gitのように作成されます。
Resolving deltas: 100% (10000/10000), done.のようになれば完了です。
このようなファイル構成になっています。

old-repository.git/
├── HEAD
├── config
├── description
├── hooks/
├── info/
├── objects/
├── packed-refs
└── refs/

4.ミラーリポジトリに移動する

cd <REPOSITORY>

<REPOSITORY>git clone --bareで作成される.gitフォルダです。
git clone --mirror XXX@XXX.git.backlog.jp:/project-name/old-repository.git とした場合は、cd old-repository.gitとなります。

5.複製元リポジトリを複製先のリポジトリにミラープッシュする

複製先のURL(<DESTINATION_REPOSITORY_URL>)にローカルリポジトリをプッシュします。

git push --mirror <DESTINATION_REPOSITORY_URL>

remote: Resolving deltas: 100% (0000/10000), done.のようになれば完了です。

コミット履歴やブランチ・タグ情報も複製できているのが確認できると思います。

注意点としては、複製元リポジトリがmasterブランチを使っていると、複製先でデフォルトブランチがmasterにならない現状が起きました(アルファベット順で最初のブランチ名が初期設定されている?)。
移行後にGitHubで、Settings→Branchesと進んで「Default branch」をmasterに変更して解消できました。

6.一時ローカルリポジトリを削除する

リポジトリは複製できたので、一時的にクローンしたリポジトリを削除します。

cd ..
rm -rf <REPOSITORY>

お疲れ様でした。これで移行は完了です!

参考情報

3
1
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
3
1