【git reset 】いまいち分かっていなかったresetを理解する【commitやpushの取り消し】

Git

git

【git reset 】いまいち分かっていなかったresetを理解する【commitやpushの取り消し】の全体の流れ

icon

【git reset 】いまいち分かっていなかったresetを理解する【commitやpushの取り消し】を行うには次の流れになります。

  • git resetとは
  • git reset
  • git reset ファイルやオプションについて

git resetとは

分かりやすく言うとGitの「commitやpushの取り消し」を行うコマンドです。
HEADを過去に移動することでgit resetすることができます。

resetは二種類の機能があります。

  1. インデックスをリセットする
  2. HEADを変更する

スポンサードサーチ

HEADとは?

HEADとは現在、自分がいる位置のことです。

icon

ブランチの最新のコミット位置になります。

HEADを前のindexに移動させることで、resetができます。

git reset方法

  • git reset:
  • git reset ファイル名:
  • git reset コミットハッシュ値:
  • git reset オプション:

スポンサードサーチ

git reset

「ステージングをリセット」することができます。
「git add」でステージエリアに移動しているファイルをリセットすることができます。

git reset ファイル名

指定したファイルとステージングから削除することができます。

git reset ./reset_sample.php

ファイルパスを指定して、git resetすると「指定したファイル」だけステージエリアからリセットされます。

スポンサードサーチ

git reset コミットハッシュ値

現在のブランチを指定したコミットをリセットすることができます。

git reset 0hoge1hoge2hoge3hoge4hoge5hoge6hoge7hoge

コミットハッシュ値でresetすると、そのコミットでワーキングツリーからステージングエリアへ移動した内容をリセットします。

git reset オプション

gitのresetオプションには次の3つがあります。
その指定した場所に現在のブランチを指定した場所に戻します。

  • –soft
  • –mixed
  • –hard

git reset –soft HEAD@{1}

HEADが対象です。
※@{1}はindex番号1という意味です。

HEADが対象です

commitだけresetすることができます。
addはresetされていません。

git reset –mixed HEAD@{1}

HEAD、ステージが対象です

commitとaddがresetすることができます。
よってaddする前に戻りますが、ローカル環境の変更は残ったままです。
※@{1}はindex番号1という意味です。

git reset –hard HEAD@{1}

HEAD、ステージ、作業ディレクトリが対象です

commit, add, ローカル環境の変更が全てresetされます。
ローカル環境の変更を残しておきたい場合はうっかりしないようにしましょう。
※@{1}はindex番号1という意味です。

直前のコミットをresetする

ハッシュ値を指定してresetする

// ハッシュ値を指定してresetする
git reset --soft ハッシュ値

// ファイル変更後ステージして、コミットする
git add -A
git commit "コミットメッセージ"

HEADの状態にresetする

// HEADの状態にresetする
git reset --soft HEAD^ 

// ファイル変更後ステージして、コミットする
git add -A
git commit "コミットメッセージ"
icon

ブランチの最新のコミット位置にresetします。

git reset HEAD^

コミット全てをresetする

コミット全てをresetする

// インデックスを全てresetする
git reset --mixed

// ファイル変更後ステージして、コミットする
git add -A
git commit -m "コミットメッセージ"

ローカルブランチをリモートのプルブランチのプルリク中と同じ状態にする方法

ローカルブランチをリモートのプルブランチのプルリク中と同じ状態にする方法

こちらはあくまでresetコマンドでHEADを移動させる方法なので、自信のローカル環境でpushしてプルリクしているケースです。

なので、最後にpushしたHEADへ移動してリセットを行います。

// ログ確認
git reflog

// originへpushした時のxxxにresetする
git reset --hard HEAD@{}

別の方はpushした内容であれば、コミットを自分のブランチへ取り込む方法でpushした状態とローカルを一致させることができます。

git reflogでGitでの履歴確認

git reflogでGitでの履歴確認

gitの過去の履歴に行ったコマンドの履歴を確認することができます。

// ログ確認
git reflog

git reflogでGitでの履歴が確認できます。
戻したいところのでインデックスを確認してresetコマンドをたたきます。

git reset --hard HEAD@{1}

git resetを取り消す

git resetを取り消す

git resetでgit resetコマンド操作も取り消すことができます。

// resetを行う
git reset
// 最後に行ったresetコマンド自体を取り消す・
git reset --hard HEAD@{1}

GitGit

Posted by kami