間違えた内容をcommitしちゃった(泣)特定のcommitだけ取り消す方法

間違えた内容をcommitしちゃった(泣)特定のcommitだけ取り消す方法

タイトルの通りです。

そうです。

僕がこの記事を書いてるということは、仕事で誤った内容をcommitしちゃいました(泣)

git周りは大かたsourcetreeに操作を任せているので、GitHubを使って管理をしていながら僕自身はあまりgitが得意ではありません。

そんな恐らく五万といるであろう(希望論)僕みたいな人たちに向けて、今回は一度commitしてしまった特定のcommitのみを取り消す方法をご紹介します。

revertコマンド

見出しの通りです。

今回はこのrevertコマンドを使います。

これは「特定のコミットを取り消す」コミットを作成します。

「復元する」というコミットを上書きをするって感じですね。

ちなみに、調べていると頻出だったrevertに似たコマンドにresetがあります。

resetは「コミット自体を履歴から取り消す」操作っぽいので、gitに履歴が残りません(たぶん)。

個人的には保守運用の観点から、「コミットを取り消した」という履歴も残した方が良いと思うので、resetは使わずにrevertを使った方が良いと思います。

Sourcetreeの場合

  1. Sourcetreeの「履歴」から取り消したいcommitを見つける
  2. 右クリックでメニューを開いて「コミット適用前に戻す…」をクリック
  3. 確認のダイアログが表示されますが、「はい」で続行

これで完了です。現在のcommitに「commitを取り消した」というcommitが生成されます。

この状態でcommit&pushすると、GitHubには「Revert “〜〜〜〜”」というcommitが加わります。

Gitで操作する場合

僕が慣れていないのであまりしたくありませんが、Gitコマンドのみで操作する場合もご紹介しておきます。

  1. GitHubで取り消したいcommitのid番号を控える
  2. 以下のコマンドを実行
    1. git revert xxx (xxxはcommitのid番号)
  3. commitメッセージは「:q」でそのまま保存

以上が手順になります!

皆さんはrevertしなくてもいいようにきちんと指示を聞いてからcommit&pushしましょう、、、(トホホ)