⛓️
git push -f origin master をやりなおす
結論
force push 禁止しよう。
一人でもプルリク運用した方が安全。
前提
- 中央リポジトリは github
- master へのコミットは原則禁止し、PullRequest で運用
- 個人無料アカウント
- 一人プロジェクトなので、他のマシンなどに master 最新のコミットが残っていたりはしない
サマリ
- github のサイト上で、master にマージされた最新のPRを探す
- 上記 PR のマージコミットの番号を調べる
- 該当のコミットをローカルに fetch する
- そのコミットにチェックアウトしてブランチを切る
- そのブランチを master として force push する
状況
- master 最新になっていないローカル master を
git push -f origin master
した - 結果、 github 上のコミット履歴が1ヶ月くらい前にタイムスリップ
- github のサイトではプルリクやマージの状況は残っている
- ローカルにも他のマシンにも最新のコミットがない
- 目の前が真っ暗になった
対応
1. github のサイト上で、master にマージされた最新のPRを探す
2. 上記 PR のマージコミットの番号を調べる
PRのページの下の方にスクロールするとマージされたコミット番号が表示されているはず。
それをクリックするとマージコミットのページに移動する。
URLないし画面内のコミット番号をコピーする。
3. 該当のコミットをローカルに fetch する
ローカルで fetch する
git fetch origin コミット番号
fetch したコミットは FETCH_HEAD
にある。
4. そのコミットにチェックアウトしてブランチを切る
git checkout FETCH_HEAD
git checkout -b 任意のブランチ名
そのブランチを master として force push する
git push -f origin 任意のブランチ名:master
はぁ、また force push するの。
Discussion