Menu
CoddyTech

Git Push

最終更新

git push は、ローカルブランチのコミットを対応するリモート(GitHub など)にアップロードします。ブランチに upstream が設定されていれば、単純な git push だけで十分です。新しいブランチの最初のプッシュでは -u を使ってリモートブランチを作成し、追跡を設定するので、以降のプッシュやプルには引数が不要になります。

これらをターミナルプレイグラウンドで試してみましょう。ブラウザ上の本物のシェルで、インストール不要です。

git push は新しいローカルコミットをリモートブランチへアップロードします。

構文

CommandWhat it does
git push現在のブランチを upstream にプッシュする
git push -u origin feature新しいブランチをプッシュし upstream を設定する
git push origin main特定のリモートとブランチにプッシュする
git push --tagsローカルのタグをすべてプッシュする
git push --force-with-leaserebase 後に安全に force push する

よくあるケース

GoalCommand
まったく新しいブランチをプッシュするgit push -u origin feature
upstream 設定後にプッシュするgit push
単一のタグをプッシュするgit push origin v1.0.0
リモートブランチを削除するgit push origin --delete feature

実例

手順コマンド結果
1git remote add origin <url>ローカルリポジトリを origin という名前でリモートに接続する
2git push -u origin mainリモートに main を作成し、ローカルの main の upstream に設定する
3git push以降の main でのプッシュは引数が不要になる

git push よくある質問

git push は何をするのですか?
ローカルブランチにあってリモートブランチにないコミットを送信し、リモートブランチをそれに合わせて進めます。送信されるのはコミットだけで、コミットしていない変更は手元に残るので、先にコミットしてください。自分が持っていないコミットがリモートにある場合、pull か rebase をするまでプッシュは拒否されます。
新しいブランチをリモートにプッシュするには?
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 -u origin main はどういう意味ですか?
origin はリモート(git remote を参照)、main はブランチで、-u はそのリモートブランチをローカルの main の upstream に設定します。GitHub が新しいリポジトリで表示するのがこのコマンドで、一度実行すれば、main での git push と git pull は引数なしで動作します。
git push と git pull の違いは何ですか?
コミットを動かす向きが逆です。git push はローカルのコミットをリモートにアップロードし、git pull はリモートの新しいコミットをダウンロードして自分のブランチにマージします。non-fast-forward としてプッシュが拒否された場合は、たいてい先に pull が必要です。pull が内部で何をしているかは git fetch と pull の違い を参照してください。
これをオンラインで練習できますか?
はい。ターミナルプレイグラウンドを開けば、ブラウザ上の本物のシェルで git push を実行できます。インストールは不要です。Coddy の無料のインタラクティブな Git コースでも、リモートの扱いを段階的に学べます。
Coddyのプログラミング言語のイラスト

Coddy で Git を学ぼう

始める