Skip to main content

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

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

git push のバージョン情報

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

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

次に例を示します。

git push  <REMOTENAME> <BRANCHNAME> 

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

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

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

git push  <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME> 

これは LOCALBRANCHNAMEREMOTENAME にプッシュしますが、名前は REMOTEBRANCHNAME に変更されます。

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

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

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

タグをプッシュする

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

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

git push  <REMOTENAME> <TAGNAME> 

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

git push  <REMOTENAME> --tags

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

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

git push  <REMOTENAME> :<BRANCHNAME> 

コロンの前にスペースがあることに注意してください。 このコマンドは、ブランチの名前を変更するときの手順と似ています。 ただし、ここでは Git に REMOTENAMEBRANCHNAME何も プッシュしないように指示しています。 このため、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://ホスト名/octocat/repo
>  * [new branch]      main     -> upstream/main

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

フォークの操作の詳細については、フォークの同期に関する記事を参照してください。

参考資料