演習 - 自分のプロジェクトを 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 で大きなファイルについて」を確認してください。

リポジトリをインポートするには、次の手順に従います。

  1. ページ右上隅の [+] を選択し、[リポジトリのインポート] を選択します。

    Screenshot of the import repository button.

  2. [Your old repository's clone URL] (古いリポジトリのクローン URL) に、インポートするプロジェクトの URL を入力します。

    Screenshot of the old repository URL textbox.

  3. 自分のユーザー アカウント、またはリポジトリを所有する Organization を選択し、GitHub 上のリポジトリの名前を入力します。

    Screenshot of the new import repository owner name.

  4. 新しいリポジトリをパブリックにするかプライベートにするかを指定します。 詳細については、「リポジトリの可視性を設定する」を確認してください。

    Screenshot of the new repository public or private options.

  5. 入力した情報を確認してから、[インポートの開始] を選択します。

    Screenshot of the begin import button for a new repository import.

  6. 既存のプロジェクトがパスワードで保護されている場合は、必要なサインイン情報を入力してから [送信] を選択してください。

    Screenshot of the location to input your old repository credentials importer.

  7. 既存のプロジェクトのクローン URL で複数のプロジェクトがホストされている場合は、インポートするプロジェクトを選択してから [送信] を選択します。

    Screenshot of a selection of projects found at the same URL. project importer.

  8. プロジェクトに 100 MB を超えるファイルがある場合は、Git Large File Storage を使用して大きいファイルをインポートするかどうかを選択してから、[続行] を選択します。

    Screenshot of files suitable for Git LFS importer.

リポジトリが完全にインポートされると、メールが届きます。

GitHub Importer でコミット作者属性を更新する

インポートの間、コミット作者の GitHub アカウントのリポジトリのコミットにマッチングできます。 GitHub Importer は、インポートしているリポジトリのコミット作者のメールアドレスにマッチする GitHub ユーザを探します。 次に、お客様は、そのメールアドレスまたは作者の GitHub ユーザ名を使って、コミットをその作者に接続することができます。

コミット作者を更新する

コミット作成者を更新するには、次の手順に従います。

  1. リポジトリをインポートした後、インポートの状態ページで [作成者の照合] を選択してください。

    Screenshot of the match authors button.

  2. 情報を更新する作成者の横の [接続] をクリックします。

    Screenshot of the connect commit author process.

  3. 作成者のメール アドレスまたは 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.gitgit://external-host.com/user/repo.git など) (おそらく、external-host.com ドメイン名の前に user@ が付いています)

デモンストレーションの目的で、以下を使用します。

  • ext-user という名前の外部アカウント
  • https://external-host.com という名前の外部 Git ホスト
  • ghuser という名前の GitHub 個人用ユーザー アカウント
  • GitHub.com 上の repo.git という名前のリポジトリ

外部リポジトリをインポートするには、次の手順に従ってください。

  1. GitHub で新しいリポジトリを作成します。 この新しいリポジトリに外部 Git リポジトリをインポートしてください。

  2. コマンドラインで、外部クローン URL を使用して、リポジトリの "ベア" クローンを作成します。 このコマンドにより、データの完全なコピーが作成されますが、ファイルを編集するための作業ディレクトリは作成されず、すべての古いデータがクリーンに新しくエクスポートされます。

    $ git clone --bare https://external-host.com/ext-user/repo.git
    #Makes a bare clone of the external repository in a local directory 
    
  3. "mirror" オプションを使用して、ローカルにクローンされたリポジトリを GitHub にプッシュします。こうすると、インポートされたリポジトリに、ブランチやタグなどのすべての参照が確実にコピーされます。

    $ cd repo.git
    $ git push --mirror https://github.com/ghuser/repo.git
    #Pushes the mirror to the new repository on GitHub.com 
    
  4. 一時ローカル リポジトリを削除します。

    $ 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 を使用してローカル リポジトリを追加するには、次の手順に従ってください。

  1. コマンド ラインで、ご自分のプロジェクトのルート ディレクトリに移動します。

  2. ローカルディレクトリを Git リポジトリとして初期化します。

    git init -b main
    
  3. プロジェクト内のすべてのファイルをステージしてコミットします。

    git add . && git commit -m "initial commit"
    
  4. GitHub でプロジェクトのリポジトリを作成するには、gh repo create subcommand を使用します。 ダイアログが表示されたら、 [既存のローカル リポジトリを GitHub にプッシュする] を選択し、リポジトリの目的の名前を入力します。 プロジェクトをユーザー アカウントではなく Organization に属するようにしたい場合は、organization-name/project-name で Organization 名とプロジェクト名を指定します。

  5. 対話型のプロンプトに従います。 リモートを追加してリポジトリをプッシュするには、リモートを追加し、コミットを現在のブランチにプッシュするように求められたら、[はい] を選択します。

  6. または、すべてのプロンプトをスキップするには、--source フラグを使用してリポジトリへのパスを指定し、可視性フラグ (--public--private、または --internal) を渡します。 たとえば、gh repo create --source=. --public のようにします。 --remote フラグを使ってリモートを指定します。 コミットをプッシュするには、--push フラグを渡します。 使用できる引数の詳細については、GitHub CLI のマニュアルを参照してください。

Git を使用して GitHub にローカル リポジトリを追加する

Git を使用してローカル リポジトリを追加するには、次の手順に従ってください。

  1. GitHub.com で新しいリポジトリを作成します。 エラーを回避するために、README、ライセンス、または gitignore files を含めて新しいリポジトリを初期化しないでください。 これらのファイルは、プロジェクトを GitHub にプッシュした後で追加できます。

    Screenshot of new repository creation.

  2. Git Bash を開きます。

  3. ワーキングディレクトリをローカルプロジェクトに変更します。

  4. ローカルディレクトリを Git リポジトリとして初期化します。

    $ git init -b main
    
  5. ファイルを新しいローカルリポジトリに追加します。 このコマンドは、最初のコミットのためにそれらのステージングも行います。

    $ git add .
    # Adds the files in the local repository and stages them for commit. To unstage a file, use 'git reset HEAD YOUR-FILE'.
    
  6. ローカル リポジトリでステージングされたファイルをコミットしてください。

    $ 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.
    
  7. GitHub.com の [クイック セットアップ] ページにあるリポジトリの上部で、[コピー] を選択してリモート リポジトリの URL をコピーしてください。

    screenshot copy remote repository url quick setup

  8. コマンド プロンプトで、リモート リポジトリの URL を追加してください。 ローカル リポジトリがこの場所にプッシュされます。

    $ git remote add origin <REMOTE_URL> 
    # Sets the new remote
    $ git remote -v
    # Verifies the new remote URL
    
  9. ローカル リポジトリでの変更を 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 に移行する」をご覧ください。