git push

ローカルリポジトリをリモートリポジトリにアップロード

コマンドの概要

ローカルリポジトリのコミットをリモートリポジトリに反映するコマンド。ローカルリポジトリの内容をリモートリポジトリにコピーするような動きをするので、ローカルリポジトリと異なるコミットがリモートリポジトリに存在するとコンフリクトが発生、git pushは中止される。

コマンドの使い方

ローカルの内容をリモートにpush

コマンド引数を省略すると現在チェックアウトしているブランチの上流ブランチに push する。

$ git push

上流ブランチが設定されていない場合には、git pushは失敗。上流ブランチを設定することを促されるので、上流ブランチを設定する。

$ git push --set-upstream origin <branch>

引数にブランチを指定すると指定したブランチを push する。

// master ブランチを push
$ git push origin master

ローカルの master ブランチをリモートの master ブランチ に push という指定は

// ローカルの master ブランチをリモートの master ブランチに push
$ git push origin master:master

リモートのブランチを削除する

git branch -dでローカルのブランチは削除できるが、リモートのブランチはそのまま残っている。リモートのブランチを削除するには、

// リモートの topic ブランチを削除
$ git push origin --delete topic

// もしくは、空のブランチを push
$ git push origin :topic

push の強制 git push –force

上流ブランチとの間にコンフリクトが発生した場合、push は中止されるが、ローカルの内容で上流ブランチを書き換えるのがgit push -f
自分のローカルの内容でリモートを書き換えるので、当然コンフリクトは解消されるが、ほかの人がそのブランチを fetch していたら当然、ほかの人たちにコンフリクトが生ずる。ので、共有しているブランチには決してpush -fはしない。 ちなみに、ローカルの内容を破棄し、リモートの内容で強制的に上書きしたいときは、git fetchしてFETCH_HEADgit resetすればよい。

// ローカルを破棄して、リモートの内容にする
$ git fetch origin master
$ git reset --hard FETCH_HEAD
Last modified 2020.06.10