Git でローカルブランチを違う名前のリモートブランチにプッシュする方法
ローカルの master ブランチをリモートにプッシュする場合, プッシュ先のリモートブランチの名前は通常ローカルブランチの名前と同名の master ですが, master 以外のリモートブランチにプッシュする方法を紹介します.
同名のリモートブランチにプッシュする場合
まず, ローカルの master
ブランチをリモート (origin
) の master
ブランチにプッシュする場合, 次のようになります:
git push origin master
別名のリモートブランチにプッシュする場合
もしそのように同名のリモート master
ブランチにプッシュするのではなく, 別名のリモートブランチに, 例えば gh-pages
ブランチにプッシュする場合, 次のコマンドでそのようにすることができます:
git push origin master:gh-pages
master:gh-pages
の部分がポイントで, その部分は <src>:<dest>
と解釈され, <src>
(ソース) であるローカルの master
ブランチを <dest>
(デスティネーション) であるリモートの gh-pages
にプッシュするという意味になります.
リジェクトされた場合
もしリモートの gh-pages
ブランチが既に存在していて, ローカルの master
ブランチをプッシュしてもそのままファストフォワードとならない場合, 次のようなエラーが表示されます:
! [rejected] master -> gh-pages (non-fast-forward)
なのでそのような場合, リモートの gh-pages
をローカルの master
にプルしてからあらためてプッシュするか:
git pull origin gh-pages
git push origin master:gh-pages
-f
(--force
) オプションを加えて, 強制的にローカルの master
ブランチでリモートの gh-pages
ブランチのコミットヒストリを書き換えてプッシュする方法があります:
git push -f origin master:gh-pages
ただ -f
オプションは, 破壊的なオプションなので, 他の人と一緒にコラボレートしているレポジトリで使用するのは, 例外的な状況を除いて控えるべきとされています.
まとめ
もしローカルのブランチを違う名前のリモートブランチにプッシュする場合は, git push origin master:gh-pages
のように git push <repository> <src>:<dest>
というシンタックスで可能です.
関連記事
Git で変更されたファイルを部分的にステージする方法2018.11.01
git rebase でヒストリを直線的にする方法と使う時の注意点2018.08.13
git push コマンドの -f オプションと + サインの違い2018.08.11
Git の Push コマンドの使い方2018.06.11
Git の Pull コマンドの使い方2018.06.07