Gitコマンドについて調べる【git push】
git push
git push
は、ローカルリポジトリにcommitした履歴をリモートリポジトリにアップロードするものです。ここでやっと自分のコードの修正がローカルからリモートにいくので、他の開発者から自分の変更が見えるようになります。
$ git push [リモートリポジトリ] [ローカルのブランチ名]:[リモートのブランチ名]
例)
$ git push ssh://[email protected]/kimromi/example.git master:master
上のコマンドは、ssh://git@github.com/kimromi/example.gitに接続し、ローカルのmasterブランチをリモートのmasterブランチにpushするというものです。ただ通常はgit cloneした時に「origin」という名前でリモートリポジトリが設定されているので、「origin」を指定できます。リモートリポジトリ名を確認するにはgit remote -v
で確認することができます。
# リモートリポジトリにoriginを指定 $ git push origin master:master # リモートリポジトリに何が設定されているか確認 $ git remote -v
また、ローカルのブランチ名とリモートのブランチ名が同じときは省略して指定することができます。この形をよく使うと思います。
# master:master と同じ名前なのでmasterと省略できる
$ git push origin master
origin
やmaster
も省略できる
$ git push
でプッシュすることもできます。ただ挙動についてはpush.default
の設定によって変わるので注意が必要です。push.default
の設定については以下のエントリがわかりやすかったです。
私はsimpleに設定しています。
$ git config --global push.default simple
オプション
-f
、--force
リモートリポジトリの状態を強制的に現在のローカルリポジトリの状態に合わせます。
$ git push -f origin master
もしもローカルが古い状態であった場合や、チームで開発している場合などは使用を避けたほうが良いです。コミットが消えてしまったり他の開発者の履歴も消してしまう場合があります。
-u
、--set-upstream
-u
をつけてpushすると、push先のブランチをTracking Branch(Upstream Branch)として登録するよう設定されます。Tracking Branchは日本語では追跡ブランチと言われ、現在のローカルブランチがどのリモートプランチを追跡しているか(ちょっと違うけど)の設定を持っています。これを設定されているとデフォルトでpushやpullの対象になります。
$ git push -u origin master
追跡ブランチの説明は以下のエントリーがわかりやすかったです。