Gitコマンドの一つ、git push はローカルリポジトリに記録した変更内容をリモートリポジトリに反映するコマンドです。Gitを使う上で最も基本的なコマンドの一つで、変更内容を記録する過程で最終的に必要となるコマンドですので初心者の方は覚えておきましょう。
目次
git push とは
Gitで変更履歴を保存する流れは下記のようになります。
作業ディレクトリ
↓ git add
ステージングエリア
↓ git commit
ローカルリポジトリ
↓ git push
リモートリポジトリ
このうちファイルの変更内容をローカルリポジトリからリモートリポジトリに反映するコマンドが git push です。
git push の使い方
実際に git push コマンドを使ってみましょう。
sample.html というファイルをコミット済みのローカルリポジトリを用意しておきました。
もしまだリモートリポジトリを追加していない場合は下記のコマンドで追加しましょう。
git remote add origin 追加したいリポジトリのアドレス.git
登録されているリモートリポジトリは下記のコマンドで確認できます。
git remote -v
git push コマンドを実行してローカルリポジトリに記録した変更内容をリモートリポジトリに反映してみます。
git push origin master
git pushのあとのorigin masterは origin というリモートリポジトリの master というブランチにプッシュするという意味です。
初めてGitHubなどのホスティングサービスに用意したリモートリポジトリにプッシュする際はユーザー名とパスワードが尋ねられますので入力しましょう。
これでローカルリポジトリの内容をリモートリポジトリにプッシュすることができました。
git push で使用可能なオプション
git push コマンドにつけられるオプションには下記のようなものがあります。
オプションによってはすべてのファイルを無理やり上書きすることも可能な危険なものもあるのでよく理解して使用しましょう。
変更点をpushする
git push リモートリポジトリのパス ローカルのブランチ名 : リモートのブランチ名(正しくは特殊変数refspec)
正しくは上記のように記述しますが、ローカルのブランチ名とリモートのブランチ名が同じときは省略して指定することができます。
前述の例ではどちらのブランチ名もmasterだったため「git push origin master」と省略して記述することができました。
git push を強制する
git push -f origin master git push --force origin master
コンフリクトが発生する場合でも強制的にプッシュを行い、リモートリポジトリの内容を上書きします。
ローカルの履歴がリモートよりも新しいときだけ push を強制する
git push --force-with-lease origin master
上流ブランチを設定する
git push -u origin maste git push --set-upstream origin master
同名の上流ブランチを設定できます。
指定したブランチを削除する
git push origin --delete ブランチ名
すべてのブランチを push する
git push --all origin
リモートに存在しないブランチを削除する
git push --prune origin
ローカルにのみ存在し、リモートに存在しないブランチを削除します。
すべてのタグを push する
git push --tags origin