by shigemk2

当面は技術的なことしか書かない

origin masterにmergeされたブランチを削除していたら、pull requestが消えた

ある日、hoge1ブランチにhoge2ブランチを取り込もうとして、pull requestを出したんだ。
その後、mergeされて不要になったブランチを消すコマンドを実行したんだ。
このとき、hoge1ブランチはまだどのブランチも取り込んでいない処女だった。

だからかどうか知らないけど、事件は起こった。
hoge1は、まだどのブランチとも関係を持っていないが故に、hoge1さんは消えてしまったのだ。

以下、その痛々しい瑕痕である。

$ git fetch
$ git remote show origin
* remote origin
  Fetch URL: git@github.com:shigemk2/Hello-World.git
  Push  URL: git@github.com:shigemk2/Hello-World.git
  HEAD branch (remote HEAD is ambiguous, may be one of the following):
    hoge1
    master
  Remote branches:
    hoge1  tracked
    hoge2  tracked
    master tracked
  Local branches configured for 'git pull':
    hoge1  merges with remote master
    hoge2  merges with remote master
    master merges with remote master
  Local refs configured for 'git push':
    hoge1  pushes to hoge1  (up to date)
    hoge2  pushes to hoge2  (up to date)
    master pushes to master (up to date)
$ git remote prune origin
$ for i in `git branch -r --merged origin/master | fgrep -v origin/master | sed -e "s@^  origin/@@g"`; do git push origin :$i; done
To git@github.com:shigemk2/Hello-World.git
 - [deleted]         hoge1
$ git remote show origin
* remote origin
  Fetch URL: git@github.com:shigemk2/Hello-World.git
  Push  URL: git@github.com:shigemk2/Hello-World.git
  HEAD branch: master
  Remote branches:
    hoge2  tracked
    master tracked
  Local branches configured for 'git pull':
    hoge1  merges with remote master
    hoge2  merges with remote master
    master merges with remote master
  Local refs configured for 'git push':
    hoge2  pushes to hoge2  (up to date)
    master pushes to master (up to date)

ね、hoge1ブランチが消えちゃったでしょ?
消えただけならまだいいけど、hoge2→hoge1のブランチも、自動的にcloseしてしまっていた。

勝手にcloseされたプルリク、reopenすら出来ない状況…
しょうがないので、hoge1さんをもう一度リモートにpushしたら、プルリクも復活した。

めでたしめでたし。