git reset コミットを取り消す方法
スポンサーリンク
このドキュメントの内容は、以下の通りです。
ソースコード管理ツールで、誤ったソースコードをしてしまった場合に、Gitでは、コミットを取り消すことができます。git reset とは
オプション | 意味 | HEAD | インデックス | ワーキングツリー |
soft | HEAD の位置のみを変更します。 | 変更 | なし | なし |
mixed | HEADの位置とインデックスを変更します。 | 変更 | 変更 | なし |
hard | HEADの位置とインデックス、ワーキングツリーを変更します。 | 変更 | 変更 | 変更 |
リポジトリの作成
まずは、作業用のディレクトリを作成します。
薫 $ mkdir reset/ 薫 $ cd reset/ 薫 $ git init Initialized empty Git repository in /home/foo/tmp/Git/reset/.git/
テスト用のファイルの作成
- a.txt を作成します。
- a.txt をコミットします。
- a.txt に変更を加えます。
- a.txt をコミットします。
薫 $ echo 1 > a.txt 薫 $ git add a.txt 薫 $ git commit -a -m '* 1st commit' [master (root-commit) 51e5398] * 1st commit 1 files changed, 1 insertions(+), 0 deletions(-) create mode 100644 a.txt 薫 $ echo 2 >a.txt 薫 $ git commit -a -m '* 2nd commit' [master 12fc440] * 2nd commit 薫 $ git log -p | cat commit 12fc440f86e9a04e7d45b5acaea55aa43597a886 Date: Tue May 8 00:53:25 2012 +0900 * 2nd commit diff --git a/a.txt b/a.txt index d00491f..0cfbf08 100644 +++ b/a.txt @@ -1 +1 @@ -1 +2 Author: foo <foo@yahoo.com> Date: Tue May 8 00:53:11 2012 +0900 * 1st commit diff --git a/a.txt b/a.txt new file mode 100644 index 0000000..d00491f --- /dev/null @@ -0,0 +1 @@ +1
Git の内容だけ元に戻す
まずは、状態の確認ですが、a.txt の内容は、2 です。
コミットログは、2つあります。
薫 $ cat a.txt 2 薫 $ git log |cat Author: foo <foo@yahoo.com> Date: Tue May 8 00:53:25 2012 +0900 * 2nd commit commit 51e5398a790e337ed7573baae6c55b0beb2871d8 Date: Tue May 8 00:53:11 2012 +0900 * 1st commit
2つめのコミットを取り消したい場合、 reset します。
薫 $ git reset --soft HEAD^
ワーキングディレクトリのファイルには、変更亭はありません。
薫 $ cat a.txt 2
git のログを確認してみると、2回目のコミットのログは、削除されています。
薫 $ git log |cat commit 51e5398a790e337ed7573baae6c55b0beb2871d8 Date: Tue May 8 00:53:11 2012 +0900 * 1st commit
以上のように、soft reset は、リポジトリ内を元に戻しますが、ワーキングディレクトリには影響はありません。
Git の内容とワーキングディレクトリの内容を元に戻す
さて、今度は、 hard reset を試してみます。
「テスト用のファイルの作成」が終わった後の状態です。
まず、ワーキングディレクトリのファイルの内容は、2 です。
薫 $ cat a.txt 2
それでは、 reset hard で、ワーキングディレクトリとリポジトリの内容を1つ前の状態に戻します。
薫 $ git reset --hard HEAD^ HEAD is now at 51e5398 * 1st commit
ワーキングディレクトリのファイルの中身は、最初に編集した内容に戻りました。
薫 $ cat a.txt 1
git の log を確認してみると、2つ目のコミットのログはなくなっています。
薫 $ git log |cat commit 51e5398a790e337ed7573baae6c55b0beb2871d8 Date: Tue May 8 00:53:11 2012 +0900 * 1st commit 薫 $
ログ
コミットログやワーキングディレクトリから変更が消えてますが、 reflog には、ちゃんと reset のログが残ってます。
51e5398 HEAD@{0}: reset: moving to HEAD^ 12fc440 HEAD@{1}: commit: * 2nd commit 51e5398 HEAD@{2}: commit (initial): * 1st commit
以上のように、hard を使うと、リポジトリの内容だけでなく、ワーキングディレクトリも元に戻ります。
合わせて読む
- [2012-03-20-1] Git を FreeBSD にインストールする
- [2012-03-21-1] Git 最初にやっておくべき便利な設定
- [2012-03-22-1] はじめてのGit入門
- [2012-03-23-1] Git ブランチを作成する
- [2012-03-24-1] FreeBSD で GitWeb を動かしてみる
- [2012-03-25-1] Git commit をやり直しする --amend
- [2012-03-26-1] Git ワーキングツリーの変更を元に戻す
書籍を探す
スポンサーリンク
スポンサーリンク
いつもシェア、ありがとうございます!
もっと情報を探しませんか?
関連記事
最近の記事
- パナソニック ジェットウォッシャードルツ EW-DJ61-Wのホースの修理
- LinuxセキュリティモジュールIntegrity Policy Enforcement
- アマゾンのEcho Show 5を買ったのでレビューします
- アマゾンのサイバーマンデーはAlexa Echo Show 5が安い
- Android スマートフォン OnePlus 7T と OnePlus 7の違い
- Android スマートフォン OnePlus 7 をAndroid10にアップデートしてみた
- クレジットカードのバーチャルカードの比較のまとめ
- 活動量計 Xiaomi Mi Band 4を買ってみたのでレビュー
- Android スマートフォン OnePlus 7 のレビュー
- AliExpressでスマートフォンを買い物してみた
- パソコンのホコリ対策 レンジフードフィルターと養生テープ
- 80PLUS GOLDのPC電源ユニットAntec NeoEco 750 Goldのレビュー
- イギリスの付加価値税 VAT は払い戻しを受けられる
- イギリスのロンドンでスーツケースなど荷物を預けられる場所は
- イギリスのロンドンで地下鉄やバスに乗るならオイスターカードを使おう
- イギリスのヒースロー空港からロンドン市内への行き方
- 航空便でほかの航空会社に乗り継ぎがある場合のオンラインチェックイン
- SFC会員がANA便ではなくベトナム航空のコードシェアを試して解ったこと
- ベトナムの入国審査でeチケットの掲示が必要だった話
- シアトルの交通ICカードはオルカカード(Orca)です
人気のページ
- Windows7 IME 辞書ツールで単語の登録に失敗しました
- C言語 popen()でコマンドを実行して出力を読み込む
- Windows7で休止状態にする方法
- CentOS MySQLの起動、停止、再起動
- loggerコマンドでsyslogにエラーを出力する方法
- パソコンパーツの買取をしてくれる店のまとめ
- Java Mapの使い方 get(),put(),remove(),size(),clear()
- 楽天のRポイントカードを作ってみた
- iPhone 5 から iPhone 6 に乗り換えたのでレビュー
- netstatコマンドのステータスの意味
スポンサーリンク
過去ログ
2020 : 01 02 03 04 05 06 07 08 09 10 11 122019 : 01 02 03 04 05 06 07 08 09 10 11 12
2018 : 01 02 03 04 05 06 07 08 09 10 11 12
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12