先刻、某コミュニティのリポジトリを先祖返りをさせてしまう失敗をしてしまったのだけど、ちょっと繰り返したくないことなので原因を振り返ります。
まず、ファイル更新前に最新版に更新しようと思い、
$ git pull --rebase
- しかし、レポジトリにアップされていた一部ファイルがダウンロードされていなかった。
- この時、ブランチをmasterから切り替えていたからなのだけど(切り替え先をupdateブランチと呼称)、切り替えていたからそうなることに気づいていなかった。
- → 一度ブランチを切り替えるか、git pull --rebase origin masterと指定すればよかった
- ダウンロードされていなかったので、自分でファイルをダウンロードして配置
- 自分としてはmasterと同じものを置いたので配置分のコミットは当然無いものと思っていたけど、当然、コミット時にupdateブランチになかったものが追加されているわけで、git commitで大量のコミットが登録される
- この時は特にcommit/pushを行わなかったのだけど、時間を置いてpushした時に、このcommit分がpushされてしまった
- このcommitを取り消したいなと思い、ぐぐって見つけたブログで git resetを行う
- 注意書きをあんまり読んでなかったのと、リモートリポジトリの変更取り消しをしたのが間違い
- 公開済み履歴の取り消しに対する危険性
$ git push -f origin HEAD^:hogehoge
- こちらでupdateブランチをresetするつもりが、masterブランチをresetしてしまっていた・・
- コマンドを雑に打ちすぎ。重要な操作はきちんと確認してから行う・・
というわけで、手順誤認とそれに対する対処方法のミス・雑さが産んでしまった事故でした。 あんまりgit操作に詳しくない状態なので、わからない時はちゃんと聞こうという教訓です。