【GitHub】リポジトリのコピー(Fork / Miller)と移動(Transfer)方法!
この記事からわかること
- GitHubのリポジトリを移動するには?
- フォークやMiller、Transferとは?
- クローンとの違い
index
[open]
\ アプリをリリースしました /
環境
- Mac M1:Sequoia 15.6.1
GitHubのリポジトリをコピー(移動)させる方法
GitHubの異なるアカウントのリモートリポジトリを自身のリモートリポジトリにコピーまたは移動させる方法はいくつかあります。ただそれぞれやり方とコピー(または移動)される内容が異なるのでそのときの要件に応じて適切なものを選択する必要があります。
- Fork
- Clone → Push(Miller)
- Transfer
Fork(フォーク)
「Fork(フォーク)」は他人のアカウントのリポジトリを自身のアカウントのリモートリポジトリにコピーすることを指します。使い道としてはOSS(オープンソースソフトウェア)開発などに自身も貢献したい場合などに活用することが多いです。
特徴
- オリジナルのリポジトリと同期することが可能
- 元のリポジトリには影響を与えない
- Pull Request(PR)を送って、元のリポジトリに変更を提案
手順
- Forkしたいリポジトリ(例:Spoon-Knife(Fork用公式サンプル))にアクセスして「Fork」をクリック
- 自身のアカウントにコピーされるリポジトリ名・説明を入力(デフォルトでオリジナル値が格納済み)
- ブランチを全てコピーするか否かをチェックで選択
- 「Create fork」をクリックすることでコピー完了
コピーされる内容
| 項目 | コピー対象 |
|---|---|
| コード(ソース) | ⚪︎ |
| コミット履歴 | ⚪︎ |
| ブランチ / タグ | ⚪︎ |
| リリース(Releases) | ⚪︎ |
| Wiki | ⚪︎(設定による) |
| Issues | × |
| Pull Requests | × |
| Actions 実行履歴 | × |
| Discussions | × |
| Projects(旧Project Boards含む) | × |
| Repository settings(シークレットや外部連携) | × |
Clone → Push(Miller)
「Clone → Push(Miller)」の方法はシンプルに他人のリモートリポジトリをクローンしてからMiller Pushで自身のリモートリポジトリに上げる方法です。この方法はOSS開発とかではなく、単純にコピーしたものをローカルに落としてプッシュしているだけです。
特徴
- オリジナルのリポジトリのコピーを作成するだけ(オリジナルとは同期されない)
- 元のリポジトリには影響を与えない
- ローカルに落としてプッシュしているだけ
手順
// --bare:作業ツリーなしでリポジトリだけ取得
$ git clone --bare https://github.com/octocat/Spoon-Knife.git
$ cd Spoon-Knife.git
// --mirror すべてのブランチ・タグ・リモート追跡設定をプッシュ
$ git push --mirror https://github.com/{MyName}/Copy-Spoon-Knife.git
コピーされる内容
| 項目 | コピー対象 |
|---|---|
| コード(ソース) | ⚪︎ |
| コミット履歴 | ⚪︎ |
| ブランチ / タグ | ⚪︎ |
| リリース(Releases) | × |
| Wiki | × |
| Issues | × |
| Pull Requests | × |
| Actions 実行履歴 | × |
| Discussions | × |
| Projects(旧Project Boards含む) | × |
| Repository settings(シークレットや外部連携) | × |
Transfer
公式リファレンス:Transferring a Repository
「Transfer」はこれまでのForkなどと異なりリポジトリそのものを別のオーナーに丸ごと渡す操作になります。
特徴
- リポジトリを別のユーザーや組織に所有権ごと移す
- 元のリポジトリは消失
手順
- 対象のリポジトリの「Settings」>「Danger Zone」>「Transfer ownership」の「Transfer」をクリック
- 「New owner」セクションで譲渡する先のアカウントを指定
- 「I understand...」をクリックして譲渡
※ 組織アカウントの場合は管理者または所有者の権限を持つ個人アカウントでサインイン
コピーされる内容
| 項目 | コピー対象 |
|---|---|
| コード(ソース) | ⚪︎ |
| コミット履歴 | ⚪︎ |
| ブランチ / タグ | ⚪︎ |
| リリース(Releases) | ⚪︎ |
| Wiki | ⚪︎ |
| Issues | ⚪︎ |
| Pull Requests | ⚪︎ |
| Actions 実行履歴 | ⚪︎ |
| Discussions | ⚪︎ |
| Projects(旧Project Boards含む) | ⚪︎ |
| Repository settings(シークレットや外部連携) | ⚪︎ |
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。






