AWS CodeCommit
ユーザーガイド (API バージョン 2015-04-13)

追加の Git リポジトリにコミットをプッシュする

2 つのリモートリポジトリに変更をプッシュするようにローカルリポジトリを設定できます。たとえば、AWS CodeCommit を試している間、既存の Git リポジトリソリューションを引き続き使用できるようにする場合があります。以下の基本的なステップに従って、ローカルリポジトリの変更を CodeCommit と別の Git リポジトリにプッシュします。

ヒント

Git リポジトリがない場合は、CodeCommit 以外のサービスで空のリポジトリを作成し、CodeCommit リポジトリをそのリポジトリに移行できます。「CodeCommit に移行する」に示している同様の手順に従ってください。

  1. コマンドプロンプトまたはターミナルから、ローカルの repo ディレクトリに切り替えて、git remote -v コマンドを実行します。次のような出力が表示されます。

    HTTPS の場合:

    origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

    SSH の場合:

    origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)
  2. git remote set-url --add --push origin git-repository-name コマンドを実行します。ここで、git-repository-name はコードをホストする Git リポジトリの URL と名前です。このコマンドは origin のプッシュ先をその Git リポジトリに変更します。

    注記

    git remote set-url --add --push は、プッシュのデフォルト URL よりも優先されるため、このコマンドを 2 回実行する必要があります。詳しくは後で説明します。

    たとえば、以下のコマンドはオリジンのプッシュ先を some-URL/MyDestinationRepo に変更します。

    git remote set-url --add --push origin some-URL/MyDestinationRepo

    このコマンドは何も返しません。

    ヒント

    認証情報を必要とする Git リポジトリにプッシュする場合は、認証情報ヘルパーまたは some-URL 文字列の設定で、それらの認証情報を設定してください。設定しないと、そのリポジトリへのプッシュは失敗します。

  3. git remote -v コマンドをもう一度実行すると、以下のような出力が生成されます。

    HTTPS の場合:

    origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin some-URL/MyDestinationRepo (push)

    SSH の場合:

    origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin some-URL/MyDestinationRepo (push)
  4. CodeCommit リポジトリを追加します。git remote set-url --add --push origin をもう一度実行します。今度は、CodeCommit リポジトリの URL とリポジトリ名を指定します。

    たとえば、以下のコマンドはオリジンのプッシュ先を https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo に追加します。

    HTTPS の場合:

    git remote set-url --add --push origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

    SSH の場合:

    git remote set-url --add --push origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo

    このコマンドは何も返しません。

  5. git remote -v コマンドをもう一度実行すると、以下のような出力が生成されます。

    HTTPS の場合:

    origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin some-URL/MyDestinationRepo (push) origin https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

    SSH の場合:

    origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (fetch) origin some-URL/MyDestinationRepo (push) origin ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo (push)

    ここではプッシュ先として 2 つの Git リポジトリがありますが、最初に some-URL/MyDestinationRepo にプッシュされます。そのリポジトリへのプッシュが失敗すると、コミットはいずれのリポジトリにもプッシュされません。

    ヒント

    他のリポジトリに手動で入力する認証情報が必要な場合は、プッシュ順を変更して、最初に CodeCommit にプッシュするようにしてください。git remote set-url --delete を実行して、最初にプッシュされるリポジトリを削除してから、git remote set-url --add を実行して、そのリポジトリをもう一度追加し、リストで 2 番目のプッシュ先になるようにします。

    他のオプションについては、Git のドキュメントを参照してください。

  6. この時点で、両方のリモートリポジトリにプッシュしていることを確認するには、テキストエディタを使用して、ローカルリポジトリに以下のテキストファイルを作成します。

    bees.txt ------- Bees are flying insects closely related to wasps and ants, and are known for their role in pollination and for producing honey and beeswax.
  7. git add を実行して、変更をローカルリポジトリにステージングします。

    git add bees.txt
  8. git commit を実行して、変更をローカルリポジトリにコミットします。

    git commit -m "Added bees.txt"
  9. コミットをローカルリポジトリからリモートリポジトリにプッシュするには、git push -u remote-name branch-name を実行します。ここで、remote-name は、ローカルリポジトリがリモートリポジトリに使用するニックネームであり、branch -name は、リポジトリにプッシュするブランチの名前です。

    ヒント

    -u オプションを使用する必要があるのは、初めてプッシュするときのみです。その後、アップストリーム追跡情報が設定されます。

    たとえば、git push -u origin master を実行すると、想定されるブランチの両方のリモートリポジトリにプッシュが送られ、以下のような出力が表示されます。

    HTTPS の場合:

    Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) To some-URL/MyDestinationRepo a5ba4ed..250f6c3 master -> master Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: To https://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo a5ba4ed..250f6c3 master -> master

    SSH の場合:

    Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) To some-URL/MyDestinationRepo a5ba4ed..250f6c3 master -> master Counting objects: 5, done. Delta compression using up to 4 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 5.61 KiB | 0 bytes/s, done. Total 3 (delta 1), reused 0 (delta 0) remote: To ssh://git-codecommit.us-east-2.amazonaws.com/v1/repos/MyDemoRepo a5ba4ed..250f6c3 master -> master

他のオプションについては、Git のドキュメントを参照してください。