今さら聞けないgit pushコマンド
id:koogawaさんのgitの記事を読みました。
これを読んでそういえばみんな知ってるのかなと思った点があるので書いておきます。
取り上げるのはgitのpush周りのお話です。
(これ以降の記事中のリモートは全てorigin
とします。)
このコロンは何??
リモートブランチの削除で以下のようなコマンドを実行すると思います。
git push origin :hoge
コロンが付いていますがこのコロン正体、正しく説明できますか?

- 作者: Jon Loeliger,吉藤英明(監訳),本間雅洋,渡邉健太郎,浜本階生
- 出版社/メーカー: オライリージャパン
- 発売日: 2010/02/19
- メディア: 大型本
- 購入: 7人 クリック: 287回
- この商品を含むブログ (44件) を見る
pushコマンドの実体
普通、ローカルブランチをリモートに反映する際のコマンドはこんな感じです。
git push origin hoge
実はこのコマンド、省略されていることをご存知ですか??
省略される前のコマンドは以下のとおりです。
git push origin hoge:hoge
コロンが出てきました!!これはどういうことなのでしょうか。
実は以下のような意味になります。
ローカルのhogeブランチをリモートのhogeブランチにpush!です。
コマンドに落としこんでみましょう。
git push {ローカルのhoge}:{リモートのhoge}
2ヶ所あったhogeは前者がローカルブランチ、後者がリモートブランチです。
(git push origin hoge
はリモート・ローカルのどちらもhoge
を指定する、という省略した書き方だったのです!)
これさえわかれば、例えばこんなことも。
git push origin master:test
ローカルのmaster
ブランチをリモートのtest
ブランチにpushしています。
ローカル作業中に間違えてmaster
ブランチでコミットしていた!といった場合に使えそうです。
(ローカルでブランチ整理してからpush
するほうが安全そうではありますが...)
でブランチの削除って結局...?
では最初のリモートブランチ削除コマンドをもう一度見てみましょう。
git push origin :hoge
ここまでを理解していただいていればピンとくるのではないでしょうか。
そうです。実はこのコマンド、以下のような指定です。
git push origin {何もない!}:{リモートのhoge}
「何もないものをリモートのhoge
にpushする = hoge
の存在を何もないものにする = hoge
を削除」です。
スッキリですね!!