ゆずめも

メモ的なブログです。主に勉強した事について書いてます。

git push

gitリポジトリにpushする時

git push origin master

って感じで指定してますよね?

git pushについてちゃんと調べたのでメモ的に残します。

とりあえず基礎的な

上のコマンドというか、pushは

git push (プッシュ先リモート名) (プッシュ先ブランチ名)

という風に指定します。

もうちょっと深く

実は最初のコマンドは省略系で省略せずに書くと

git push origin master:master

という感じです。

一番後ろのmaster:masterとか
意味わからないと無駄に長いだけだと思いますがちゃんと意味があります。

これは

git push (リモート名) (ローカルブランチ):(push先リモートブランチ)

という感じで
ローカルのこのブランチを、リモートのこのブランチへpushしてくれって意味です。

要するにgit push origin masterは、リモートもローカルも同じでいいよって意味だったってことです

リモートブランチの削除

リモートブランチの削除もpushを使用します。
リモートのhogeブランチを削除する場合は

git push origin :hoge

と書きますが、さっき学んだ知識を持ってすれば
なんでこのコマンドでリモートのブランチが消えるのかが理解できると思います。

一応書いておくと
git push (リモート名) (なーんにもない):(リモートブランチ)

何もない空のブランチを、リモートのブランチに上書きします。
空のブランチを書き込む訳だから、リモートが空になって消えるという訳です。

--forceオプション

ローカルのブランチの状態でサーバ上のブランチを上書きできます
-fは省略系

git push -f origin master

このオプションはかなり危険

誰かが自分が作業してるブランチに更新をあげていたりすると、上書きするので失われる

本来ならやらない方がいいんだけど、自分のコミットが間違って時などに修正して-fオプションで強制的に上書きしたりする

--force-with-releaseを使うと更新されている場合は上書きできなくなるので積極的に使っていけばいいと思う