アクセスできないリモートリポジトリをクローンしたディレクトリを受領し、アクセスできるリポジトリにミラーリングするような状況。
前提
- clone済み
- リモート(origin)へはアクセスできない
- ローカルはmasterブランチのみ
- リモートのブランチはfetch済み(チェックアウト可能)
やったこと
- アクセスできるリポジトリを作成
- (以下受領したディレクトリでの作業。SourceTreeから開いたターミナルなどでの想定)
- 作成したリポジトリを新しいリモート(our)として追加
- リモート(origin)のすべてのブランチをチェックアウト(したことにする)
git b -r|grep -v HEAD|grep ' origin/'|sed 's/ *origin\///'|xargs -I {} git branch --track {} origin/{}
- リモートブランチの一覧から、現在のブランチを除外し、
origin/
を含むブランチに限定し、origin/
を削除して、ローカルブランチとしてチェックアウトした状態にする
- すべてのローカルブランチをリモート(our)にプッシュする
git push --all our
もしかすると、この作業は git push --mirror our
だけで完結する内容なのかもしれないが、未確認。
参考URL
- 手元にあるGit リポジトリをGitHub のリポジトリへ移行する - Qiita
- Git の mirror 関連のオプションや設定 - Qiita
--mirror
の説明が少し。公式ドキュメントを見たほうが早いかもしれない。