Git Push
最終更新
git push は、ローカルブランチのコミットを対応するリモート(GitHub など)にアップロードします。ブランチに upstream が設定されていれば、単純な git push だけで十分です。新しいブランチの最初のプッシュでは -u を使ってリモートブランチを作成し、追跡を設定するので、以降のプッシュやプルには引数が不要になります。
これらをターミナルプレイグラウンドで試してみましょう。ブラウザ上の本物のシェルで、インストール不要です。
構文
| Command | What it does |
|---|---|
git push | 現在のブランチを upstream にプッシュする |
git push -u origin feature | 新しいブランチをプッシュし upstream を設定する |
git push origin main | 特定のリモートとブランチにプッシュする |
git push --tags | ローカルのタグをすべてプッシュする |
git push --force-with-lease | rebase 後に安全に force push する |
よくあるケース
| Goal | Command |
|---|---|
| まったく新しいブランチをプッシュする | git push -u origin feature |
| upstream 設定後にプッシュする | git push |
| 単一のタグをプッシュする | git push origin v1.0.0 |
| リモートブランチを削除する | git push origin --delete feature |
git push よくある質問
新しいブランチをリモートにプッシュするには?
git push -u origin <branch> を実行します。-u(--set-upstream の短縮形)はリモートにブランチを作成し、ローカルブランチをそれに紐付けるので、以降は引数なしの git push と git pull が動作します。リモートブランチはこの最初のプッシュまで存在しません。git push が 'no upstream branch' と表示するのはなぜ?
ローカルブランチがまだリモートブランチに紐付いていないためです。
git push -u origin <branch> でプッシュしてリモートブランチを作成し、upstream を設定してください。その後は git push だけでコミットの送信先がわかるようになります。タグをプッシュするには?
タグはデフォルトではプッシュされません。単一のタグは
git push origin <tagname> で、すべてまとめては git push --tags でプッシュします。これはよくある落とし穴です。ローカルで作成したタグは、明示的にプッシュするまでリモートには現れません。安全に force push するには?
履歴を書き換えた後(rebase や amend)は、
--force ではなく git push --force-with-lease を使いましょう。最後の fetch 以降に他の誰もプッシュしていない場合にのみリモートを上書きするので、チームメイトの作業を守れます。詳しい説明は git force push のページを参照してください。これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ上の本物のシェルで
git push を実行できます。インストールは不要です。Coddy の無料のインタラクティブな Git コースでも、リモートの扱いを段階的に学べます。