masterの修正を作業ブランチに取り込むために、リベースしたものの、操作をミスってしまって、リベース自体をなかったことにしたい、コミットログすら残らないように巻き戻したい。
そんなときはリセットをハードで実施すればよい。
TortoiseGitの場合は、「ログを表示」した後に、戻りたいリビジョンを右クリックした上で、「ここへリセット」を選択し、リセットの種類で「Hard」を選べばよい。
リモートブランチに反映させる場合は、「プッシュ」時に、「把握外の変更」にチェックをしてプッシュすれば、リモートブランチ上からもコミットが消える。
上記のプッシュをしていない場合は、プルを行えば、リモートブランチ側の最新が反映され、リセット操作は無効となる。
なお、「把握外の変更」にチェックを入れて、プッシュすると、ローカルブランチ、リモート追跡ブランチ、リモートブランチのすべてからリセット以前の情報が消えるので、本当になかったことにしたいとき以外はやらないこと。
また、プッシュ後にリセットすると、同じブランチで作業している人の作業履歴を改変することになるので、基本的にやらないこと。
そのブランチが自分専用ならワンチャンOK。
プッシュ済みのものを戻したい場合は、resetやrebaseではなくrevertを使うのが流儀らしい。
revertは簡単に言うと、コミットをなかったことにするのではなく、間違いを打ち消すためのコミットをする。
ただし、この場合、自動生成されるコミットログにおいて、後の方にrevertした親コミットについてしか記載がない点は注意(もう一方の親コミットについても手動で記載すべきなのだろうか・・・?)
コメントを残す