github でブランチを削除してから、
同名のブランチをプッシュしようとしたところ、失敗することがありました。
どうやら下の通りの手順で発生する模様です。
- foo というブランチを作成
- foo からプルリクを出す
- foo を削除
- 同じ名前の foo というブランチでプッシュ
この場合、2. で出したプルリクはクローズになりますが、
プルリクを開くと、当時のコードを読むことができます。
原因は、予想ですが、下のとおりです。
- ブランチを削除しても、プルリクを出してある場合は、コードを残すために、github が、ブランチを裏で保存してある
- そのため、同名のブランチをプッシュしようとすると、ブランチ名が衝突して失敗する