Allied ArchitectsAllied ArchitectsEngineer Blog

Gitの取り消す操作

2013/07/18 Git

こんにちは。monipla for facebookを担当している佐藤(ま)です。
アライドでは「大佐」と呼ばれております。

今回は、Gitの「取り消す操作」について書きたいと思います。

調べてみるとたくさん記事が出てくるのですが、コマンドだけという記事も多いので、ここでは、コマンドの結果をできるだけSource Treeの画面で確認していく形で進めていきたいと思います。
(Source Treeの画面操作だけでも同様のことはできますが。)

◇ リポジトリ構成
今回は以下のようなリポジトリを用意しました。

コミット履歴

◇ コミット前の変更を取り消す
1. 編集したワーキングツリーのファイルをコミットに戻す

※ またsrcディレクトリ内の編集したファイルをすべて戻したい場合はディレクトリを指定すればOKです。

2. インデックス ⇛ ワーキングツリーへ戻す
git resetコマンドを使います。上記のA.txtをインデックスへ入れた状態の場合、上記コマンドでの取り消しはできません。インデックスからワーキングツリーへ戻す場合は、以下のコマンドとなります。

Source Treeでいうと、ここのエリアを行ったり来たりしているのと同じですね。

また、git resetコマンドには、「–soft , –mixed[no option] , –hard」というオプションがあり、インデックスに入れた変更をワーキングツリーではなくコミットに戻す場合には「–hard」オプションを使います。

◇ コミット後の変更を取り消す
ここでも git reset コマンドを使います。ここでは「–soft , –mixed[no option] , –hard 」オプションすべての実行結果を、「C」のコミットに戻す操作で確認してみます。

1. –soft

「C」のコミットまで戻り、それまでの変更はステージングエリアに入ります。
(既にインデックスやワーキングツリーに変更があった場合はそのままです。)

2. –mixed(no option)

「C」のコミットまで戻り、それまでの変更はワーキングツリーに入ります。
(既にインデックスに変更があった場合は同時にワーキングツリーへ移動します。)

3. –hard

「C」のコミットまで戻り、それまでの変更はインデックス、ワーキングツリーから削除されます。

◇ 特定のコミットを取り消す
過去にコミットした特定のコミットを取り消す場合などには、以下のコマンドを使います。

「C」のコミットが取り消され、新しくコミットされます。

Gitには便利なコマンドが揃っているので、他にも色々確認して行きたいと思います。

ではまたー

sato.masaki
  • sato.masaki
  • developer
  • よく使うであろうことをできるだけ分かりやすく発信していきます。 Gitの情報を無駄にキャッチアップしてます。

RELATION ENTRY

社内エンジニア向けにマークアップハンズオンを開催しました

社内エンジニア向けにマークアップハンズオ...

2017/05/23 Markup

お久しぶりです。アライドの大佐 (@taisa831)です。最近社内でUIデザイナーにお願いしてマークアップハンズオンをやってもらったのでその時のことを紹介したいと思います。 なぜやったか 弊社ではマークアップとエンジニアの仕事は分業していて、仕様の確認後はエンジニアは設計をし、UIデザイナーが...

続きを読む

Git の中身を見てみよう!vol.2 – Git オブジェクト (Advent Calendar 21日目)

Git の中身を見てみよう!vol.2 ...

2014/12/21 Git

こんにちは。アドベントカレンダー21日目を担当する佐藤(ま)です。 アライドでは「大佐」と呼ばれております。 前回に引き続き、git-scm.com の Book をみながら Git (.git) の中身をみていってみようと思います。今回は、前回も少し触れましたが、Git オブジェクトについてです...

続きを読む

sato.masakiの記事一覧へ

ページTOPへ