5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

間違えて実行したgit commit --amendを元に戻す方法

5
Last updated at Posted at 2020-11-06

間違えて実行したgit commit --amendを元に戻す方法のアイキャッチ

この記事でわかること

  • 間違えて実行したgit commit --amendを元に戻す方法 で扱う作業の全体像
  • 手順を進める前に確認したい前提
  • 今の環境で試すときに気をつけたい点

はじめに

Gitでgit commit --amendコマンドを使ってコミット内容を修正したものの、間違えて上書きしてしまった場合、元の状態に戻したいことがあります。本記事では、git commit --amendを取り消す方法について、具体的な手順を解説します。

手順

以下の手順で、git commit --amendの変更を取り消すことができます。

手順1: git reflogで過去のコミットを確認

まず、git reflogコマンドを実行して、過去のコミット履歴を確認します。HEADの過去の状態を確認し、戻したい状態の番号を確認しましょう。

git reflog

git reflogの出力例

abc1234 HEAD@{0}: commit (amend): Update README
def5678 HEAD@{1}: commit: Initial commit

この例では、HEAD@{1}がamend前の状態です。

手順2: git reset --softで特定のコミットに戻す

戻したいコミットを確認したら、git reset --softコマンドを使ってその状態に戻します。例えば、上記の例でHEAD@{1}に戻すには、以下のコマンドを実行します。

git reset --soft HEAD@{1}

これで、amendを取り消した状態に戻すことができます。

手順3: 状態を確認

git logを実行して、元の状態に戻っているか確認しましょう。

git log

注意点

  • git resetは慎重に使用
    --hardオプションを使うとファイルも元の状態に戻ってしまうため、通常は--softを使用することをおすすめします。

  • バックアップを取っておく
    取り消し操作はリスクが伴うため、事前に必要なファイルのバックアップを取っておくと安心です。

エラーが発生した場合

もしgit resetがうまくいかない場合、以下の手順を試してみてください。

  1. git statusで状態を確認
  2. コマンドがうまくいかない場合は、再度git reflogでコミットの状況を確認

まとめ

git commit --amendで行ったコミットの上書きを取り消す方法を紹介しました。この手順を覚えておくことで、誤ってコミットを上書きしてしまった場合でも簡単に元に戻すことができます。

実務で使うときの確認ポイント

  • 対象環境、実行ユーザー、カレントディレクトリを確認してからコマンドを実行する。
  • 破壊的な操作は、バックアップやdry-run相当の確認をしてから進める。
  • スクリプト化する場合は、失敗時の終了コード、ログ、再実行時の挙動を確認する。

おわりに

ここまで読んでいただきありがとうございました。
Wealthy Designでは、AWS・Webシステム開発・AI活用など、現場で使える技術を大切にしています。

会社の取り組みは、会社サイトにまとめています。

AWS・Web開発・AI活用のご相談や、採用・カジュアル面談については、Wealthy Design公式LINEでもお問い合わせいただけます。

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?