4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Gitの基本コマンドおさらい編 その1

Last updated at Posted at 2020-12-20

この記事の目的

Git初心者の皆さん、Gitって難しいですよね!
Gitのコマンド一覧に目を通して一応使い方を分かったつもりでも、いざ実践しようと思うと「あれ、僕って私ってGitのこと全然分かってなくない!?」ってなることはよくあると思います!
そんな人のために、この記事ではGitの基本的なコマンドについて、おさらいも含めて説明していきます。

本題へスキップ

※この記事ではローカルリポジトリ内&単一ブランチのみの操作を扱います。複数ブランチを扱った操作についてはおさらい編(その2)で解説します(執筆中)
※この記事はGitを使った経験がある人を対象として書いているため、基本的なGit用語は説明なしで使ったり、説明の順番が前後したりすることがあります。

この記事で扱うコマンド

免責事項

当サイトのコンテンツや情報において、可能な限り正確な情報を掲載するよう努めておりますが、 誤情報が入り込んだり、情報が古くなったりすることもあり、必ずしもその内容の正確性および完全性を保証するものではございません。当該情報に基づいて被ったいかなる損害について、一切責任を負うものではございませんのであらかじめご了承ください。

.gitフォルダに生成される構造

Git管理を開始する時、初めに打つコマンドを覚えていますか?
そう、git init です。

git init

  • git init:バージョンのデータを残すための.gitフォルダを作成する。

一般的にこのコマンドは「対象のフォルダをGit配下に置くコマンド」と説明されがちですが、私はこれをより具体的な事象で捉えなおしました。
git initを打つと、対象フォルダ内に.gitフォルダが作成されます。コミットなどの操作を行うとこの.gitフォルダ内にその情報が残り、バージョンごとのファイルとそのツリー構造が保存されます。私は「対象のフォルダをGit配下に置く」とは、「バージョンのデータを残すための.gitフォルダを作成する」ことだと捉えなおしました。それをするためのコマンドが、git initなのです。
image.png
そして、この.gitフォルダ内に生成される構造を概念的に表したのが、次の図になります。
※この図はあくまでGit理解を目的とした概念的な図であり、実際に存在する構造を表したものではありません。
image.png

ワークツリーとは普段私たちが作業しているフォルダ、つまり普通のフォルダのことを呼びます。
一方、.gitフォルダ内にはリポジトリステージという2つの空間が生成されます。
リポジトリはコミットしたフォルダ構造を保存する場所で、1つのバージョンごとに1つのフォルダ構造が保存されています。つまり、git commitを打つごとに新しいフォルダ構造が新規作成されることになります。
ステージとは、ワークツリーとリポジトリの中間に位置する空間で、ワークツリーのフォルダ構造を一時的に保管する場所となっています。ステージ内には1つのフォルダ構造しか保管できません。よって、git addコマンドを打つとそれまでステージにあったフォルダ構造は、ワークツリーのフォルダ構造に上書きされます。

ワークツリー ⇒ リポジトリ の方向にフォルダ構造を保存するコマンド

ここでは、手元の作業フォルダであるワークツリーをリポジトリに保存するまでの流れを説明します。

git add

  • git add FILENAMTE:ワークツリーの指定したファイル(FILENAME)をステージに保存する。

※FILENAMTEに.を入力すると、ワークツリーにある全てのファイルが指定されます。
image.png

git commit

  • git commit -m "COMMENT":ステージにあるフォルダ構造をリポジトリに保存する。COMMENTの部分はコミットメッセージと呼ばれ、そのバージョンの概要や、前のバージョンとの差分を一言でまとめたりする。

image.png

上記2つのコマンドを組み合わせて使うことで、手元のワークツリーで保存した内容をリポジトリに保存することができます。

  1. git add .
  2. git commit -m "COMMENT"

image.png

リポジトリ ⇒ ワークツリー の方向にフォルダ構造を書きかえるコマンド

ここでは、ステージやリポジトリの内容でワークツリーを書き換えるコマンドを紹介します。

git restore

  • git restore FILENAME:ステージの指定したファイル(FILENAME)をワークツリーに保存する。
  • git restore --staged:リポジトリのフォルダ構造をステージに保存する。

※FILENAMTEに.を入力すると、ワークツリーにある全てのファイルが指定されます。

git reset

  • git reset COMMITNAME:リポジトリにある指定のバージョン(COMMITNAME)のフォルダ構造をステージに保存する。
  • git reset --hard COMMITNAME:リポジトリにある指定のバージョン(COMMITNAME)のフォルダ構造をワークツリーに保存する。

※COMMITNAMEを省略すると、リポジトリにある最新のバージョンが指定されます。

image.png

.gitリポジトリとワークツリーの状態を確認するコマンド

Gitで開発していると、ワークツリーは手元で確認できますが、ステージとリポジトリの内容は直接参照することができません。そこで、これらの状態や履歴、差分を確認するためのコマンドを紹介します。

git status

  • git status:ワークツリーとステージ、ステージと最新リポジトリの各々の間における、差分の有無と、差分のあるファイルの名前を出力する。

まず、ワークツリー/ステージ/リポジトリが全て同じフォルダ構造の状態でgit statusを実行します。
image.png
すると次のように、差分のあるファイルは特に表示されません。
image.png

次に、ワークツリーのみ編集した状態でgit statusを実行します。
image.png
すると、ファイル名が赤色の文字で表示されます。
これがワークツリーとステージとの間に差分のあるファイル、すなわち編集されたファイルを表しています。
image.png

今度は、git add .コマンドを実行し、ワークツリーのフォルダ構造をステージに保存します。
image.png
今度は、ファイル名が緑色の文字で表示されました。
これはステージとリポジトリとの間に差分のあるファイル、すなわちコミット待ち状態のファイルを表しています。
image.png
以上がgit statusコマンドの説明です。

git diff

  • git diff:ワークツリーとステージのファイル内の差分を表す。
  • git diff --staged:ステージとリポジトリのファイル内の差分を表す。
    image.png
    image.png

git log

  • git log:コミット履歴を表す。
  • git log --oneline:コミット履歴を各一行で表す。

いかがでしたか!?
当記事は単なるコマンドの説明にとどまらず、包括的な理解につながるよう意識して執筆しました。
分かりづらい点や間違っている点があったら是非ご指摘いただけると幸いです!
よかったら高評価とチャンネル登録よろしくお願いします!

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?