Git Gui: 過去のコミットの利用例
目次
関連記事: Windows: Git GUIを使う準備
過去のコミットの特定のファイルが欲しい
例えば、過去に不要と思って削除したファイルを復元したい場合。
チェックアウトという機能を使います。
Git GUIの場合
- 一旦、過去のコミットの状態を丸ごと復元する。
- 復元したいファイルを別の場所に避難させる。
- 最新のコミットの状態に戻す。
- 避難させたファイルを戻す。
実際にやってみます。
過去に削除したtest2.php
を復元したい場合。
gitk側で、削除する前の版のSHA1 ID
をコピーします。
Git GUIのメニューでブランチ > チェックアウト
を選び、ラジオボタンの選択をリビジョン式
を移し、その枠の中に先ほどのIDを貼り付けます。
その後、チェックアウト
を押します。
エクスプローラでフォルダの中身を確認すると、全てが過去の版に戻っています。
目当てのtest2.php
を別の場所へ避難させます。
もう一度Git GUIのメニューでブランチ > チェックアウト
を選び、今度はローカルブランチ
のmaster
を選択してチェックアウトします。
これで、再び最新の版に戻ります。
後は、避難させたtest2.php
を戻すだけです。
Git Bashの場合
コマンドラインならば下記で済みます。
なお、復元したファイルは既にコミット予定(ステージングエリア)に入っています。
git log --oneline
で短縮されたIDを確認する。
(履歴が長い場合、j
とk
で上下にスクロール、q
キーで離脱できます)git checkout [短縮ID] test2.php
で狙ったファイルだけを復元する。
過去のコミットの状態に戻す (後戻りできない)
注意: 前章の一時的な復元とは異なり、以下の方法で戻った場合はそれ以後の変更履歴が消えてしまうので、戻る前の状態に戻すことができません。
リセットという機能を使います。
Git GUIの場合
戻りたいコミットの上で右クリックして、masterブランチをここにリセットする
を選びます。
これで完了です。
gitkの履歴では最新のコミットも残っているように見えます。
実際、最新のコミットにリセットすることで元に戻すことができます。
しかし、一度gitkを閉じるとリセットしたコミット以後の履歴は消えてしまいます。
ソフトウェアやコンピュータがフリーズする可能性もあるので、やはり後戻りできないことを覚悟して実行してください。
Git Bashの場合
直近のコミットの状態に戻す (後戻りできない)
ファイルをいろいろ編集したけれど、全部破棄して直近のコミットのまっさらな状態に戻したい場合。
前章の方法でリセットしてもいいのですが、もっと簡単な方法があります。
Git GUIの場合
メニューでブランチ > リセット
を選ぶだけです。
Git Bashの場合
git reset --hard
を実行するだけです。
実は、後戻りできる
コマンドラインだけですが、できます。
reflogには最終的なコミット履歴だけでなく、チェックアウトやリセット、それによって消えてしまったコミットも記録されています。
ただし、それらは30日で消えてしまいます。
保険として捉えてください。