LoginSignup
84
80

More than 5 years have passed since last update.

git pushできないときの対処法

Posted at

はじめに

最近、Gitをよく使うようになってきた気がします(まだ初心者は脱却できてないと思います)。
そうなると、GithubなりGitLabなりBitbucketなりでの管理も重要になってきて、そうなると当然

git push

このコマンドを使う必要があるわけですよ。

しかし、このコマンドを打つと失敗することがあります。
エラーメッセージを読めばそれで済む話ですが、読むの面倒だしとりあえずpushしたいんだよ!!
ってなることはないこともないと思います。

そんな時のための対処法(?)です。
あ、今回はsshとかhttpsといった話はしません。それは出来ているという前提で進めます(そっち方面の内容も今度話したいですね。)。

ステップ1

いきなりステップとか言っちゃいましたけど、ステップ1から順番にやってみ? という話です。
一応言っておきますが、どんどん強引な手段になっていきますので、本来はちゃんとエラーメッセージを読むべきだと思います。これちゃんと言ったからな!

というわけでステップ1です。

git push origin dev

devブランチじゃないならdevのところを今のブランチ名にしてください。
masterにいるならdevのところをmasterに変更ですね。
originは簡単に言うとリモートリポジトリにって意味です。

案外これでいけちゃうパターンが多いのではないかと思います。
ちなみにこれでいけましたって人は

git push -u origin dev

というように、最初のpushで-uをつけていないパターンが多い気がしなくもないです。

ステップ2

git pull
git push

pushする前にちゃんとpullできてんのか? という話です。
ちょっと趣旨と違う気もしますが、意外と忘れている人いたりするんで。
pullのところはfetch+mergeでもいいと思いますが、その辺はどちらでも。

ステップ3

git push origin :dev
git push -u origin dev

はい。めっちゃ強引な手です。
最初にリモートのdevブランチを消し飛ばし、そのあとで新たにdevブランチをpushしています。あんまオススメはしません

ステップ4

push -f origin dev

はい、こっちも強引ですね。
-fすることで強制的にpushをします。リモートのdevがどこにいようともお構いなしです。
仮にリモートのdevが別のよくわかんないところにいたとしても、そいつは消し飛んでpushされます。
同じくあまりオススメはしません。
権限とか公開鍵秘密鍵の設定によってはエラーがでますし(その場合は鍵を作りなおせばいい話ですが)。
オススメはしませんが、私が一度も使ったことがないといったら完全に嘘になります。
困ったらこれっしょ! ってやつです。

まとめ

ステップ1、2については強引じゃないですが、3、4についてはかなり強引ですので自己責任でどうぞ。
まぁ強引っちゃ強引ですが、こういうコマンドがある以上使えはするってことですから、使ってもいいんじゃないですかね。
push -f は、マジ安定感パネェっす。

以上です。

84
80
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
84
80