git push

手元のコミットを、GitHub などのリモートリポジトリへ送る。

実行前の状態

README.md を 1 回コミットして、リモートへ送ったあと、README.md に 1 行足してコミットした場面です。まだリモートに送っていないコミットが 1 つあり、それを送りたいときに打ちます。

この状態を手元で作るなら、次の順に打ちます。リモートは GitHub の代わりに、手元に作った受け皿 (origin.git) で見立てます。

ターミナル

git init -q --bare -b main origin.git
git init -q -b main hello
cd hello
echo "# hello" > README.md
git add README.md
git commit -q -m "README を作る"
git remote add origin ../origin.git
git push -q -u origin main
echo "start" >> README.md
git commit -q -a -m "README に説明を足す"

最小の例と結果

送り先を決めてあるブランチなら、引数なしで打てます。

ターミナル

git push
To ../origin.git
   a1b2c3d..9f8e7d6  main -> main
  • To ../origin.git は送り先です。GitHub なら https://github.com/... のような住所が出ます。
  • a1b2c3d..9f8e7d6 は、リモートの先頭が前のコミットから新しいコミットへ進んだという意味です。番号は手元では別の英数字が出ます。
  • main -> main は、手元の main をリモートの main へ送ったという意味です。

成功の確認

git status -sb の 1 行目に [ahead 1] が出ていなければ、送り終わっています。

ターミナル

git status -sb
## main...origin/main

ターミナル

git status
On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

Your branch is up to date with 'origin/main' は、手元とリモートが同じ位置にあるという意味です。

構文と主要オプション

書き方すること
git push送り先を決めてあるブランチを、その送り先へ送る
git push -u origin mainorigin の main へ送り、以後は引数なしで打てるよう送り先を覚えさせる。最初の 1 回だけ使う
git push origin <ブランチ名>指定したブランチを origin へ送る
git push --tagsタグをまとめて送る
git push --force-with-lease作り直した履歴で上書きして送る。手元の控え (origin/main など) より新しい相手のコミットがあれば止まる。fetch 済みなら止まらないので、ほかの人も使うブランチには使わない

失敗時の戻し方

push は、リモートの側の履歴を書き換えます。送ったコミットをほかの人がもう取り込んでいるかもしれないので、手元だけで消して済ませることはできません。

送ったコミットを打ち消したいとき

履歴は消さず、打ち消すコミットを新しく足して、もう一度 push します。元のコミットも履歴に残ります。

ターミナル

git revert a1b2c3d
git push

git push --force で履歴ごと上書きする近道は使いません。ほかの人が取り込んだコミットと食い違って、相手の作業が壊れます。

パスワードや鍵を送ってしまったとき

あとからファイルを消しても、履歴には残り続けます。先に、そのパスワードや鍵を無効にして、新しく作り直します。履歴からの取り除きは、そのあとで考えます。

送り先が決まっていないとき

git push だけを打って fatal: The current branch main has no upstream branch. と出たら、そのブランチはまだ送り先を決めていません。git push -u origin main と打ちます。

よくある疑問

rejected と出て、push が弾かれます

リモートに、手元にないコミットがあります。ほかの人が先に push したか、別の場所から自分で送ったかのどちらかです。

ターミナル

git push
To ../origin.git
 ! [rejected]        main -> main (fetch first)
error: failed to push some refs to '../origin.git'

この後ろに出る hint の行は省いています。

先に git pull で相手のコミットを取り込み、そのあと push し直します。git push --force で上書きすると、相手のコミットが消えます。

push したのに、GitHub の画面に出ません

送ったブランチを見ているか確かめます。GitHub の画面の左上にあるブランチの欄が、送ったブランチと同じ名前になっていなければ、別のブランチを見ています。

push は何を送りますか

送るのはコミットだけです。コミットしていない変更や、ステージに載せただけの変更は送られません。git status で、変更が残っていないことを確かめてから打ちます。

確かめた Git の版 2.50.1 (Apple Git-155)確認日 2026年10月17日正本は Git 公式マニュアル (英語)

Git コマンド辞典の索引へ戻る