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-NAME
を REMOTE-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-NAME
の BRANCH-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://HOSTNAME/OCTOCAT/REPO
> * [new branch] main -> upstream/main
ローカルでの変更が終わったら、ローカル ブランチを GitHub にプッシュし、pull request を開始できます。
フォークの操作について詳しくは、「フォークを同期する」をご覧ください。