演習 - 自分のプロジェクトを GitHub にアップロードする
GitHub Importer、コマンド ライン、または外部移行ツールを使用して、リポジトリを GitHub にインポートできます。
GitHub Importer について
Subversion、Mercurial、Team Foundation バージョン管理 (TFVC)、または別の Git リポジトリにソース コードがある場合は、GitHub Importer を使って GitHub に移動できます。 GitHub Importerは、コミットやリビジョン履歴を含めてソースコードリポジトリを素早くインポートしてくれます。
インポート中は、インポートするバージョン管理システムに応じて、次のタスクの一部を実行できます。 Git Large File Storage を使用しない場合は、リモート リポジトリでの認証、コミット作成者の属性の更新、大きなファイルを使用したリポジトリのインポート、または大きなファイルの削除を行います。
インポート アクション | Subversion | Mercurial | TFVC | Git |
---|---|---|---|---|
リモートリポジトリでの認証 | X | X | X | X |
コミット作者の属性の更新 | X | X | X | |
大きなファイルを Git Large File Storage に移動する | X | X | X | |
リポジトリからの大きなファイルの削除 | X | X | X |
GitHub Importer でリポジトリをインポートする
別のバージョン管理システムでホストされているプロジェクトがある場合は、GitHub Importer ツールを使用して GitHub に自動的にインポートできます。 GitHub Importer は、すべてのインポートに適しているわけではありません。 たとえば、既存のコードがプライベート ネットワークでホストされている場合、このツールではアクセスできません。 このような場合、Git リポジトリであればコマンド ラインを使用したインポート、他のバージョン コントロール システムからインポートするプロジェクトであれば外部のソース コード移行ツールをお勧めします。
インポート中にリポジトリ内のコミットを作成者の GitHub ユーザー アカウントと照合させたい場合。 まず、インポートを開始する前に、リポジトリのすべての共同作成者が GitHub アカウントを持っていることを確認してください。
リポジトリと個々のファイルには、サイズの制限があります。 詳細については、「GitHub で大きなファイルについて」を確認してください。
リポジトリをインポートするには、次の手順に従います。
ページ右上隅の [+] を選択し、[リポジトリのインポート] を選択します。
[Your old repository's clone URL] (古いリポジトリのクローン URL) に、インポートするプロジェクトの URL を入力します。
自分のユーザー アカウント、またはリポジトリを所有する Organization を選択し、GitHub 上のリポジトリの名前を入力します。
新しいリポジトリをパブリックにするかプライベートにするかを指定します。 詳細については、「リポジトリの可視性を設定する」を確認してください。
入力した情報を確認してから、[インポートの開始] を選択します。
既存のプロジェクトがパスワードで保護されている場合は、必要なサインイン情報を入力してから [送信] を選択してください。
既存のプロジェクトのクローン URL で複数のプロジェクトがホストされている場合は、インポートするプロジェクトを選択してから [送信] を選択します。
プロジェクトに 100 MB を超えるファイルがある場合は、Git Large File Storage を使用して大きいファイルをインポートするかどうかを選択してから、[続行] を選択します。
リポジトリが完全にインポートされると、メールが届きます。
GitHub Importer でコミット作者属性を更新する
インポートの間、コミット作者の GitHub アカウントのリポジトリのコミットにマッチングできます。 GitHub Importer は、インポートしているリポジトリのコミット作者のメールアドレスにマッチする GitHub ユーザを探します。 次に、お客様は、そのメールアドレスまたは作者の GitHub ユーザ名を使って、コミットをその作者に接続することができます。
コミット作者を更新する
コミット作成者を更新するには、次の手順に従います。
リポジトリをインポートした後、インポートの状態ページで [作成者の照合] を選択してください。
情報を更新する作成者の横の [接続] をクリックします。
作成者のメール アドレスまたは GitHub ユーザー名を入力し、Enter キーを押します。
パブリックメールアドレスのある GitHub ユーザにコミットを属させる
インポートしたリポジトリのコミットの作成者に、コミットの作成に使用したメール アドレスに関連付けられている GitHub アカウントがあり、コミットメール アドレスがプライベートとして設定されていない場合。 その場合は、GitHub Importer により、コミットに関連付けられているメール アドレスが、その GitHub アカウントに関連付けられているパブリック メール アドレスと照合され、コミットが GitHub アカウントに属性付けされます。
パブリックメールアドレスのない GitHub ユーザにコミットを属させる
インポートしたリポジトリのコミットの作成者が GitHub プロファイルにパブリック メール アドレスを設定しない場合、またはコミット メール アドレスがプライベートとして設定されている場合。 その場合は、GitHub Importer で、コミットに関連付けられているメール アドレスが GitHub アカウントと照合されない場合があります。
コミット作成者は、メール アドレスをプライベートとして設定すると、この問題を解決できます。 その後、そのコミットが <username>@users.noreply.github.com
に属性付けされ、インポートされたコミットが GitHub アカウントに関連付けられます。
メールアドレスを使ったコミットの属性付け
作成者のメール アドレスが GitHub アカウントに関連付けられていない場合は、インポート後にアカウントにアドレスを追加でき、コミットは正しく属性付けされます。
作成者が GitHub アカウントを持っていない場合、GitHub Importer によりコミットがコミットに関連付けられているメール アドレスに属性付けされます。
コマンド ラインを使用して GitHub リポジトリをインポートする
既存のコードがプライベート ネットワークでホストされている場合など、GitHub Importer が目的に適していない場合は、コマンド ラインを使用してインポートすることをお勧めします。
始める前に、以下をご確認ください:
- GitHub ユーザー名
- 外部リポジトリのクローン URL (
https://external-host.com/user/repo.git
、git://external-host.com/user/repo.git
など) (おそらく、external-host.com
ドメイン名の前にuser@
が付いています)
デモンストレーションの目的で、以下を使用します。
- ext-user という名前の外部アカウント
https://external-host.com
という名前の外部 Git ホスト- ghuser という名前の GitHub 個人用ユーザー アカウント
- GitHub.com 上の repo.git という名前のリポジトリ
外部リポジトリをインポートするには、次の手順に従ってください。
GitHub で新しいリポジトリを作成します。 この新しいリポジトリに外部 Git リポジトリをインポートしてください。
コマンドラインで、外部クローン URL を使用して、リポジトリの "ベア" クローンを作成します。 このコマンドにより、データの完全なコピーが作成されますが、ファイルを編集するための作業ディレクトリは作成されず、すべての古いデータがクリーンに新しくエクスポートされます。
$ git clone --bare https://external-host.com/ext-user/repo.git #Makes a bare clone of the external repository in a local directory
"mirror" オプションを使用して、ローカルにクローンされたリポジトリを GitHub にプッシュします。こうすると、インポートされたリポジトリに、ブランチやタグなどのすべての参照が確実にコピーされます。
$ cd repo.git $ git push --mirror https://github.com/ghuser/repo.git #Pushes the mirror to the new repository on GitHub.com
一時ローカル リポジトリを削除します。
$ cd .. $ rm -rf repo.git
ローカルでホストされているコードを GitHub に追加する
既存のソース コードまたはリポジトリがコンピューターまたはプライベート ネットワークにローカルに保存されている場合は、ターミナルにコマンドを入力して GitHub に追加できます。 Git コマンドを直接入力するか、GitHub CLI を使用してください。
GitHub CLI は、コンピューターのコマンド ラインから GitHub を使用するためのオープンソース ツールです。 GitHub CLI を使用すると、コマンド ラインを使用して既存のプロジェクトを GitHub に追加するプロセスを簡略化できます。 GitHub CLI の詳細については、「GitHub CLI について」を確認してください。
GitHub CLI を使用して GitHub にローカル リポジトリを追加する
GitHub CLI を使用してローカル リポジトリを追加するには、次の手順に従ってください。
コマンド ラインで、ご自分のプロジェクトのルート ディレクトリに移動します。
ローカルディレクトリを Git リポジトリとして初期化します。
git init -b main
プロジェクト内のすべてのファイルをステージしてコミットします。
git add . && git commit -m "initial commit"
GitHub でプロジェクトのリポジトリを作成するには、
gh repo create subcommand
を使用します。 ダイアログが表示されたら、 [既存のローカル リポジトリを GitHub にプッシュする] を選択し、リポジトリの目的の名前を入力します。 プロジェクトをユーザー アカウントではなく Organization に属するようにしたい場合は、organization-name/project-name
で Organization 名とプロジェクト名を指定します。対話型のプロンプトに従います。 リモートを追加してリポジトリをプッシュするには、リモートを追加し、コミットを現在のブランチにプッシュするように求められたら、[はい] を選択します。
または、すべてのプロンプトをスキップするには、
--source
フラグを使用してリポジトリへのパスを指定し、可視性フラグ (--public
、--private
、または--internal
) を渡します。 たとえば、gh repo create --source=. --public
のようにします。--remote
フラグを使ってリモートを指定します。 コミットをプッシュするには、--push
フラグを渡します。 使用できる引数の詳細については、GitHub CLI のマニュアルを参照してください。
Git を使用して GitHub にローカル リポジトリを追加する
Git を使用してローカル リポジトリを追加するには、次の手順に従ってください。
GitHub.com で新しいリポジトリを作成します。 エラーを回避するために、README、ライセンス、または
gitignore files
を含めて新しいリポジトリを初期化しないでください。 これらのファイルは、プロジェクトを GitHub にプッシュした後で追加できます。Git Bash を開きます。
ワーキングディレクトリをローカルプロジェクトに変更します。
ローカルディレクトリを Git リポジトリとして初期化します。
$ git init -b main
ファイルを新しいローカルリポジトリに追加します。 このコマンドは、最初のコミットのためにそれらのステージングも行います。
$ git add . # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
ローカル リポジトリでステージングされたファイルをコミットしてください。
$ git commit -m "First commit" # Commits the tracked changes and prepares them to be pushed to a remote repository. To remove this commit and modify the file, use 'git reset --soft HEAD~1' and commit and add the file again.
GitHub.com の [クイック セットアップ] ページにあるリポジトリの上部で、[コピー] を選択してリモート リポジトリの URL をコピーしてください。
コマンド プロンプトで、リモート リポジトリの URL を追加してください。 ローカル リポジトリがこの場所にプッシュされます。
$ git remote add origin <REMOTE_URL> # Sets the new remote $ git remote -v # Verifies the new remote URL
ローカル リポジトリでの変更を GitHub.com にプッシュします。
$ git push origin main # Pushes the changes in your local repository up to the remote repository you specified as the origin
ソースコード移行ツール
外部ツールを使って、プロジェクトを GitHub に移動できます。 Subversion、Mercurial、TTeam Foundation バージョン管理 (TFVC) や他の Git リポジトリからプロジェクトをインポートする場合は、GitHub Importer を使用することをお勧めします。 これらの外部ツールを使って、プロジェクトを Git に変換することもできます。
Subversion からインポートする
一般的な Subversion の環境では、複数のプロジェクトが単一のルートリポジトリに保管されます。 GitHub では、通常、それぞれのプロジェクトはユーザー アカウントや Organization の別々の Git リポジトリにマップされます。 次の場合、Subversion リポジトリのそれぞれの部分を別々の GitHub リポジトリにインポートすることをおすすめします。
- コラボレーターが、他の部分とは別のプロジェクトの部分をチェックアウトまたはコミットする必要がある場合
- それぞれの部分にアクセス許可を設定したい場合
Subversion リポジトリを Git にコンバートするには、これらのツールをおすすめします:
Mercurial からインポートする
Mercurial リポジトリを Git に変換する場合は、hg-fast-export をお勧めします。
TFVC からのインポート
TFVC と Git の間で変更を移動する場合は、git-tfs をお勧めします。
TFVC (一元化されたバージョン管理システム) から Git への移行の詳細については、「一元化されたバージョン コントロールから Git に移行する」をご覧ください。