Skip to main content

コミットをリモートリポジトリにプッシュする

ローカル ブランチで実行されたコミットをリモート リポジトリにプッシュするには、git push を使用します。

git push のバージョン情報

git push コマンドは 2 つの引数を取ります。

  • リモート名 (例: origin)
  • ブランチ名 (例: main)

次に例を示します。

git push REMOTE-NAME BRANCH-NAME

たとえば、通常、ローカルの変更をオンライン リポジトリにプッシュするために git push origin main を実行します。

ブランチの名前を変更する

ブランチの名前を変更する場合も、同じ git push コマンドを使いますが、新しいブランチの名前という引数をもう 1 つ追加します。 次に例を示します。

git push REMOTE-NAME LOCAL-BRANCH-NAME:REMOTE-BRANCH-NAME

これは LOCAL-BRANCH-NAMEREMOTE-NAME にプッシュしますが、名前は REMOTE-BRANCH-NAME に変更されます。

"non-fast-forward" エラーに対処する

リポジトリのローカル コピーが同期されていない、つまりプッシュ先である上流リポジトリより古くなっている場合は、non-fast-forward updates were rejected というメッセージが表示されます。 これは、ローカルの変更をプッシュする前に上流の変更を取得、つまり "フェッチ" する必要があるという意味です。

このエラーについて詳しくは、「non-fast-forward エラーの扱い」をご覧ください。

タグをプッシュする

デフォルトで、追加のパラメータを使わない場合、git push はリモート ブランチと名前が一致するすべてのブランチを送信します。

1 つのタグをプッシュする場合は、ブランチをプッシュするときと同じコマンドを発行できます。

git push REMOTE-NAME TAG-NAME

すべてのタグをプッシュする場合は、次のコマンドを使用できます:

git push REMOTE-NAME --tags

リモートブランチまたはタグを削除する

ブランチを削除する構文は、1 回見ただけでは少し難解です:

git push REMOTE-NAME :BRANCH-NAME

コロンの前にスペースがあることに注意してください。 このコマンドは、ブランチの名前を変更するときの手順と似ています。 ただし、ここでは Git に REMOTE-NAMEBRANCH-NAME何も プッシュしないように指示しています。 このため、git push はリモート リポジトリ上のブランチを削除してしまいます。

リモートとフォーク

GitHub ではリポジトリを "フォーク" できることを既にご存じかもしれません。

自分が所有するリポジトリをクローンするときには、更新をフェッチしたりプッシュしたりする対象を Git にリモート URL で指定します。 元のリポジトリとのコラボレーションが必要な場合は、ローカルの Git クローンに新しいリモート URL を追加するといいでしょう。その名前は通例、upstream です。

git remote add upstream THEIR_REMOTE_URL

これで、更新とブランチを その フォークからフェッチできるようになります。

git fetch upstream
# Grab the upstream remote's branches
> remote: Counting objects: 75, done.
> remote: Compressing objects: 100% (53/53), done.
> remote: Total 62 (delta 27), reused 44 (delta 9)
> Unpacking objects: 100% (62/62), done.
> From https://github.com/OCTOCAT/REPO
>  * [new branch]      main     -> upstream/main

ローカルでの変更が終わったら、ローカル ブランチを GitHub にプッシュし、pull request を開始できます。

フォークの操作について詳しくは、「フォークを同期する」をご覧ください。

参考資料