git add ってなんのためにやるの? Gitの「ステージング」をイラストで解説します! このエントリをはてなブックマークに登録

2018年04月16日

asachunasachun

お久しぶりです、亀井です。相変わらず赤いプロ野球球団の動向を追いかけ続けています。一眼レフカメラと超望遠レンズも買ってしまいました。いい瞬間を捉えられたときはテンションが上りますね。

今回はGitをはじめたばかりのときにつまづきがちな「ステージング」について絵を交えて説明してみようと思います。

※ この記事は和み系記事です。

ステージングとは

git の作業スペースには「ワーキングツリー」と「インデックス」があります。

99fb7a54-44fe-45b4-97ee-5781d4bc7394

(以前に書いた記事 git pull と git pull –rebase の違いって?図を交えて説明します!から引用)

ワーキングツリーは作業している最中のスペース、インデックスはコミットするためのファイルを登録しておくためのスペースです。ステージングとは、「インデックスにコミットするファイルを登録する」ということです。

でも、私は始めのうちは「なんで git add が必要なの?直接 git commit したらいいのでは?」と考えていました。

ステージングの便利さ

イラストを交えてご説明しましょう。例えばこんなコミットツリーがあるとします。

754e786b-8ac2-4b06-9f68-87b8f988c8bc-1920x1400r

先程の絵と今回の絵ではまったくイラストのタッチが違いますね。画風がなかなか決まりません。つらいです……

ここに「メスの猫にヒゲをつける」というコミットを積みたいのですが、コミットする前にオスにもヒゲをつけてしまいました。
git status では変更の詳細が見られず、オスかメスかわかりません。

68695322-4d88-454d-a0f6-68acf806c06d-1920x1170r

git diff で変更の詳細を見てみましょう。

51876cb4-f281-42c7-b97e-416aefc8f884-1920x1170r

メスだったら git add します。

22c19d5b-05f8-44f6-a626-f5539cc163a5-1920x1170r

オスだったら……

2e018410-77f5-44f6-8950-12e3531fc965-1920x1170r

何もしません。

7d4e1e9c-1237-418b-abfd-a1492395305b-1920x1170r

この作業を繰り返して、メスの猫だけをインデックスに登録します。

ワーキングツリーの中身にメスの猫がいなくなったのを確認したら、コミットしましょう。

6423168c-3eed-4d7b-a6b5-f20291471fc8

コミットできました!
(commitのスペルを間違えました)

なぜステージングが必要なのか?

コミットには、コミットメッセージにそぐわない無関係の変更を含むべきではありません。ですがときに作業の都合により、ワーキングツリーに大量の変更が積まれてしまうことがあります。ステージングはその中からコミットに含めたい変更を選別する作業といえます。

ステージングの必要性と便利さがおわかりいただけたでしょうか?それではよい git ライフを!

  1. メモからはじめる情報共有 DocBase 無料トライアルを開始
  2. DocBase 資料をダウンロード

「いいね!」で応援よろしくお願いします!

このエントリーに対するコメント

コメントはまだありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


トラックバック

we use!!Ruby on RailsAmazon Web Services

このページの先頭へ