git push
のバージョン情� �
git push
コマンドは 2 つの引数を取ります。
- リモート名 (例:
origin
) - ブランチ名 (例:
main
)
次に例を示します。
git push <REMOTENAME> <BRANCHNAME>
たとえば、通常、ローカルの変更をオンライン リポジトリにプッシュするために git push origin main
を実行します。
ブランチの名前を変更する
ブランチの名前を変更する� �合も、同じ git push
コマンドを使いますが、新しいブランチの名前という引数をもう 1 つ追� します。 次に例を示します。
git push <REMOTENAME> <LOCALBRANCHNAME>:<REMOTEBRANCHNAME>
これは LOCALBRANCHNAME
を REMOTENAME
にプッシュしますが、名前は 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 に REMOTENAME
の BRANCHNAME
に 何も プッシュしないように指示しています。 このため、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 を開始できます。
フォークの操作の詳細については、フォークの同期に関する記事を参照してく� さい。