あひるの勉強部屋

つらつらつら~と不定期にカキコするブログ

gitのブランチでひと悶着

gitを使っていて、よく分からないことが起きたのでひとつ。(解決?済み)

ローカル環境から見ると、リモートにブランチが存在しているように見えるが、実際には存在していないという奇っ怪な現象に見舞われました。

$ git branch -a
  remotes/origin/hoge

となって実際には既にないはずのremotes/origin/hogeがあるというのです。

試しにpushして消そうとしましたが、

$ git push origin :hoge
  error: unable to delete 'hoge': remote ref does not exist
  error: failed to push some refs ro 'ssh://example.com/foo'

と表示され消そうにも消せません。

実際にgitサーバーを確認しても既にないので当たり前といえば当たり前ですが...

そこで友人に教えて貰ったコマンドを使ってみたところ解決!!!

git remote prune origin

どうやらローカル側にキャッシュされていたリモートのブランチが悪さしていたようで、コレを実行すると既にリモートにないリポジトリのキャッシュがローカルから消されるようです。

しばらく悩まされていたので解決して一安心