「softでもhardでもHEADとブランチを付けたまま」――git resetで作業の取り消しこっそり始めるGit/GitHub超入門(6)(1/3 ページ)

本連載では、バージョン管理システム「Git」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説していきます。今回は、「git reset」コマンドを使用して作業の「やり直し」や「取り消し」を行う方法を、「--soft」「--mixed」「--hard」オプションを使用して解説。

» 2016年10月27日 05時00分 公開
[平屋真吾クラスメソッド]

「mixed」もある

 本連載「こっそり始めるGit/GitHub超入門」では、バージョン管理システムGit」とGitのホスティングサービスの1つ「GitHub」を使うために必要な知識を基礎から解説していきます。具体的な操作を交えながら解説していきますので、本連載を最後まで読み終える頃には、GitやGitHubの基本的な操作が身に付いた状態になっていると思います。

 前回の記事「Gitコミット現場あるある――やり直し、取り消し、変更したいときに使えるコマンド」では「git commit --amend」や「git checkout -- {ファイル名}」コマンドを使用して作業の「やり直し」や「取り消し」を行う方法を解説しました。

 連載第6回目の本稿では「git reset」コマンドを使用して作業の「やり直し」や「取り消し」を行う方法を、「--soft」「--mixed」「--hard」オプションを使用して解説します。

「git reset」コマンドの概要

 「git reset」コマンドの動作で鍵となるのは「HEAD」です。

 本連載の第3回目の記事「ポインタ嫌いでも分かるGitブランチの基本――作成、確認、切り替え、masterにマージ、削除」で説明した通り、HEADは現在のブランチを指すポインタです。そして、ブランチはそのブランチの最新のコミットを指すポインタです。

図1 HEADとブランチの実体

 コミットを重ねるごとにブランチが指すコミットとHEADが指すブランチが変化していきます。

図2 コミットによってHEADとブランチが移動する様子

 「git reset」コマンドを使えば、HEADが指すブランチを移動させることができます。ブランチが指すコミットが変わることになり、これによって作業のやり直しを行えます。

図3 「git reset」コマンドによってHEADが指すブランチが移動する様子

 例えば、HEADが指すブランチを1つ前に移動させれば、最新のコミットを「コミット履歴」から消すことができます。

図4 「git reset」コマンドによってコミット履歴からコミットを破棄する様子

「git{任意のコマンド名}-h」でコマンドの使い方が分かる

 ここで「git reset」コマンドの使い方を軽く見ておきましょう。「git{任意のコマンド名}-h」コマンドを使用すれば、指定したコマンドの使い方を表示できます。

 「git reset」コマンドの使い方を表示する場合は以下のように「git reset -h」コマンドを使用します。

$ git reset -h
usage: git reset [--mixed | --soft | --hard | --merge | --keep] [-q] [<commit>]
   or: git reset [-q] <tree-ish> [--] <paths>...
   or: git reset --patch [<tree-ish>] [--] [<paths>...]
    -q, --quiet           be quiet, only report errors
    --mixed               reset HEAD and index
    --soft                reset only HEAD
    --hard                reset HEAD, index and working tree
    --merge               reset HEAD, index and working tree
    --keep                reset HEAD but keep local changes
    -p, --patch           select hunks interactively
    -N, --intent-to-add   record only the fact that removed paths will be added later

 基本型は「git reset{オプション}{コミット}」であり、「HEADが指すブランチ」が指定した「コミット」を指すようになります。

 また、指定するオプションによって動作が変わります。本稿では「--soft」「--mixed」「--hard」の3つのオプションの動作を試していきます。

       1|2|3 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。