LoginSignup
0
2

More than 3 years have passed since last update.

【Git】gitでファイルの履歴を過去に戻す方法

Last updated at Posted at 2021-04-20

初めに

gitでcommitしたけどその後不具合が発生したことはよくあります。そんな時にファイルの履歴を過去に戻す方法について記事にしてみました。
※内容に間違いなどがある場合はご指摘をよろしくお願いします。

基本はコマンドラインで操作する

github desktopなどGUIベースでgitの操作が簡単にできるようになってはいるものの、gitの細かい操作には向いてないのでお勧めしません。コマンドラインで履歴を戻すにはワークツリー、ステージ、リポジトリというgitの仕組みを理解する必要があります。
https://qiita.com/redrabbit1104/items/2046a7853351e69c1b18

git logで履歴を確認

先ずは「git log」コマンドで今までの履歴を確認します。

>git log

commit b34c256fd724cc269144abdeddc42d31101c2374 (HEAD -> master)
Author: redrabbit1104 <redcaprabbit1104@gmail.com>
Date:   Wed Apr 21 07:26:25 2021 +0900

    modify-html

commit c808493e13e5d42f5371f00f4efa8ccaa224d5c9
Author: redrabbit1104 <redcaprabbit1104@gmail.com>
Date:   Wed Apr 21 07:25:33 2021 +0900

    first_commit
(END)

最新のcommit(履歴)が一番上で下の方が古いcommit(履歴)です。HEADは一番最後にcommitした履歴。つまり最新の履歴です。commitの隣の長い番号(b34c256fd724cc269144abdeddc42d31101c2374)はcommitした時の管理番号みたいなものであり、この番号を使って履歴を戻すことができます。

#index.htmlファイル
<body>

    <div></div>
    <p></p>
    <a href=""></a>
    TEST     #"TEST"という文字列が書いてある
</body>

git reset

git resetコマンドを使って過去に戻ることができます。そのためには先程のcommit番号が必要です。今回は戻りたいところが「first_commit」という履歴だとします。commit番号は「c808493e13e5d42f5371f00f4efa8ccaa224d5c9」。

因みにgit restの後にこの番号を入力すればいいのですが、「--hard」「--mixed」
「--soft」があります。

  • --soft :commitのみ取り消す(ローカルリポジトリーの取り消し)
  • --mixed : commitとaddの取り消し(ローカルリポジトリーとステージの取り消し)
  • --hard : commitとaddと作業場の修正内容まで全部取り消し(ローカルリポジトリーとステージ、ワークツリー全て取り消す)

いろいろありますが、基本的には--hardで大丈夫です。
git reset --hard 「戻りたい時点のcommit番号」

>git reset --hard c808493e13e5d42f5371f00f4efa8ccaa224d5c9
HEAD is now at c808493 first_commit

first_commitに戻りましたとメッセージが出ます。

履歴とファイルの確認

git logで履歴を確認します。

 git log
commit c808493e13e5d42f5371f00f4efa8ccaa224d5c9 (HEAD -> master)
Author: redrabbit1104 <redcaprabbit1104@gmail.com>
Date:   Wed Apr 21 07:25:33 2021 +0900

    first_commit
(END)

modify-htmlの履歴がなくなり、現在first_commitが最新の履歴になりました。index.htmlのファイルを確認してみます。

#index.htmlファイル
<body>

    <div></div>
    <p></p>
    <a href=""></a>
           #"TEST"という文字列が消えている
</body>

これで履歴が戻ったことが確認できました。

参考記事

https://qiita.com/shuntaro_tamura/items/db1aef9cf9d78db50ffe
https://www.sejuku.net/blog/71512

0
2
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
0
2