目的
- Git/Gerritで始めてrestoreを実施した時の話をまとめる
- restoreはコマンドで実行したわけではなくGerritのGUI上からボタンクリックで行った。そのときの話をまとめる。
※Gerritでの操作を前提とした話なのであまり汎用性のない話かもしれません。
経緯
- Gerritにてレビュー中のファイルの内容を更新したかった。
- レビュー中の内容を消したかった。
- 「コミットを取り消すなら
abandon
」とバカの一つ覚えしていた。 - abandonを実行した。
- ファイル内容を修正して修正後のファイルを、修正前ファイルをpushした環境からリモートにpushした。
- 自動レビューシステム(社内構築)がエラーを返した。
- 修正後ファイルの親コミットがabandonしたコミットになっていて、ファイルの構成がおかしかったためエラーになった。
- abandonしたコミットの内容をrestoreボタンをクリックして元に戻した。
- restore後、復帰させたコミットが指す親コミットが2個前のコミットを指していた。
- 上司にレクチャーを受けながらGerritのRebaseボタンをクリックして親コミットを1個前のコミットに設定した。
経緯に対する私的や個人的メモ
- 一度pushしたファイルの修正は
$ git commit --amend
を使用するようにする。 - restoreはabandonされたコミットを復帰させるためのもの。
- 親コミットが一つ前のコミットを指してない時はrebaseを使使う。
自分の良くなかった行動・よかった行動
良くなかった行動
-
$ git commit amend
はコミットメッセージを修正するためのものと思い込んでいた。 - 何かあったらabandonすれば良いと思っていた。
- 自己判断でabandonした。
よかった行動
-
基礎的なGitの知識がすこしあったため、解決が比較的スムーズだった。
-
一歩踏み込んだ内容を質問することができた
- 上司が教えてくれた内容がスムーズに理解できた。
- 疑問に思ったことをより具体的に上司に質問できた。
-
一度pushしたファイルを修正したい時の対処法が明確にわかった。