「git add」「git commit」まで完了したら、いよいよリモートリポジトリと同期する「git push」です。GitHubを利用する際には必須のコマンドなのでオプションも含めて自由に使えるようにしておきたいですね。
この記事では「git push」コマンドの基本的な使い方とオプションについて解説していきます。ブランチの指定方法や強制Pushの方法についても紹介します。
Git pushとは
「git push」とは、ローカルリポジトリのCommitを、リモートリポジトリと同期するコマンドです。
Git pushを実行するには、事前にローカルリポジトリ、リモートリポジトリを作成しておく必要があります。詳しい方法については、次のページを参考にして下さい。
Git pushの最も基本的なコマンドの書き方は以下の通りです。
$ git push origin ローカルブランチ名
Git Pushの使い方
Git Pushを使う基本的な流れを紹介します。
- 今回の例は、README.mdファイルの更新をリモートリポジトリに同期(Push)します。
- 「git add」を実行して、ファイルをインデックスに登録します。
$ git add .
- 「git commit」を実行して、ファイルの更新をリポジトリに記憶します。
$ git commit
- 「git push」を実行して、ローカルリポジトリをリモートリポジトリに反映します。
$ git push origin develop
- 今回の例では、ローカルのdevelopブランチをPushするので、「git push origin」の後には「develop」と記述しコマンドを実行します。
- 初回のPush時には、GitHubのユーザー名、パスワードを入力する必要があります。
- Pushが完了すると次のようなメッセージが表示されます。
- Push操作後に、リモートリポジトリを見ると変更を確認できます。
例では、GitHub上のdevelopブランチに、README.mdファイルのCommitが追加されていることが確認できます。
Pushができない場合
Push時のブランチ名がリモートリポジトリに存在していない場合は、エラーが発生してPushができません。
リモートブランチに同じブランチ名がない場合は、新しくブランチを作成して下さい。
Pushコマンドで新しくブランチを作成したい場合は「-u」オプションを使用します。
$ git push -u origin ローカルブランチ名
GitHubのページ上で直接ブランチを作成することもできます。
ブランチを指定してPushする方法
上記の使い方では、ローカルブランチと同名のリモートブランチにPushされます。ローカルで新しくブランチを切ってしまった時など、やや不便な場合もあります。
ローカルとリモートのブランチ名を別で指定してPushしたい場合は、次のように:(コロン)をブランチ名を挟んで記述します。
$ git push origin ローカルブランチ名:リモートブランチ名
- 【実行例】
ローカルのdevelopブランチをリモートのmasterブランチにPushする場合は、次のようにします。$ git push origin develop:master
forceオプションを使った強制Pushの方法
「git push」はリモートリポジトリと同期するコマンドですが、あくまで「ローカルリポジトリで新たに追加されたコミットをリモートリポジトリにも追加する」流れが基本な使い方です。
そのため、リモートリポジトリに存在するコミットがローカルリポジトリに存在しない場合に「git push」するとエラーが発生します。
- 【実行例】
ローカルのみ最新のCommitを取り消した状態でPushするとエラーが発生
しかし、整合性を無視してでもリモートリポジトリと同期させたいケースも発生します。
強制的にPushを行いたい場合は、次のように「-f」や「–force」オプションを使用します。
$ git push -f origin ローカルブランチ名
- 【実行例】
最新のCommitを取り消したソースを、developブランチに強制的にPushする場合は、次のようにします。$ git push -f origin develop
実行すると、先ほど出たエラーが出ずに、Pushが完了します。
*forceオプションを使った強制Pushは、リポジトリを破壊的に上書きしてしまう危険もあります。特に共有ブランチの場合は、他のメンバーに必ず確認してから使うようにしましょう。
以上、「git push」の基本的ん使い方やブランチ指定、オプションの利用方法の解説でした。
コメント