
本記事の目的
「昨日まで動いていたのに、どこを直したか分からなくなった…」
「ファイル名が最終版.docx最終版_ver2.docx本当に最終版.docxで溢れかえっている…」
開発の現場や、あるいは個人の学習の中でも、そんな「あるある」な悩みを抱えたことはありませんか?
この記事では、そんな悩みを一掃する魔法の道具「Git(ギット)」の基本的な使い方を、世界一わかりやすく解説します。開発経験1年未満のあなたも、この記事を読み終える頃には、自信を持ってバージョン管理の第一歩を踏み出せるようになります。
Gitは、ファイルの変更履歴を記録し、いつでも過去の状態に戻せる「タイムマシン」のようなシステムです。これを使いこなせれば、もうファイルの変更に怯える必要はありません。
さあ、一緒にGitの世界へ飛び込みましょう!
目次
操作の概要
Gitの操作を理解するために、まず3つの重要な「場所」を、身近なものに例えて覚えましょう。
リポジトリ: コミットされた変更履歴が、すべて保管されているデータベース(完成品を保管する倉庫)。
ワークツリー: あなたが今まさに編集しているファイルが置かれている場所(作業机)。
ステージングエリア: コミット(記録)したい変更を、一時的に置いておく待機場所(発送用の段ボール箱)。
Gitを使った開発は、基本的に以下のサイクルを繰り返します。この「作業机 → 段ボール → 倉庫」という流れを意識すると、各コマンドの役割がとても分かりやすくなります。
- ファイルの変更・作成(作業机での作業)
- 変更内容の確認 (
git status,git diff) - 記録したい変更を選択 (
git add)(作業机から段ボールへ) - メッセージを付けて記録 (
git commit)(段ボールから倉庫へ) - 記録履歴の確認 (
git log)
このサイクルが、Gitを使った開発の基本となります。
GitとGithubの導入手順については、以下の記事で詳細に解説していますので、導入が終わっていない方は、記事を見て導入してみてください。
コマンドごとの利用事例と実行手順
コマンドの読み方
これからの実行例でyour-name@pc:~> 「昨日まで動いていたのに、どこを直したか分からなくなった…」 のように表示される部分は、お使いのPC環境を示すプロンプトです。実際にコマンドを入力する際は、この部分を除いたmkdir my-project` のようなコマンド部分のみを打ち込んでください。
1. git init:Gitの管理を始める「はじめの一歩」
概要
新しいプロジェクトを開始する際に、そのディレクトリをGitの管理下に置くためのコマンドです。
実行すると、.gitという隠しディレクトリが作成され、ここに変更履歴などがすべて保存されます。
利用事例
- これから新しいWebサイトなどのプログラム開発を始めたい。
- 学習用のプログラムを書いて、その変更の履歴を記録したい。
実行手順
- ターミナル(WindowsではコマンドプロンプトやPowerShell)を開きます。
- プロジェクト用の新しいディレクトリを作成し、そこに移動します。
bash # "my-project" という名前のディレクトリを作成 your-name@pc:~$ mkdir my-project # 作成したディレクトリに移動 your-name@pc:~$ cd my-project git initコマンドを実行します。bash your-name@pc:~/my-project$ git init- 「Initialized empty Git repository in …/.git/」のようなメッセージが表示されれば成功です。
実行例
your-name@pc:~$ mkdir my-project
your-name@pc:~$ cd my-project
your-name@pc:~/my-project$ git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
hint:
hint: Disable this message with "git config set advice.defaultBranchName false"
Initialized empty Git repository in /Users/your-name/my-project/.git/Note:
hint:から始まるメッセージは、Gitからの親切なアドバイスです。ここでは「デフォルトのブランチ名がmasterになっていますが、最近はmainが主流ですよ」ということを教えてくれています。このメッセージは表示されなくても問題ありません。
.git ディレクトリの内部構造解説
.gitディレクトリは、Gitリポジトリのすべての情報と履歴を格納する「心臓部」です。あなたがgitコマンドを実行するたびに、Gitはこのディレクトリ内のファイルを読み書きしています。.gitディレクトリに格納されているフォルダやファイルの解説を以下に示します。
| ファイル/ディレクトリ名 | 役割・概要 | 詳細・補足 |
|---|---|---|
HEAD | 現在の場所を示すポインタ | 通常はref: refs/heads/mainのように、現在チェックアウトしているブランチへの参照が記録されています。これにより、Gitは現在のブランチの最新コミットを把握します。 |
config | リポジトリ固有の設定ファイル | このリポジトリ専用の設定がキーバリュー形式で保存されます。リモートリポジトリのURL ([remote "origin"])、ブランチの追跡設定 ([branch "main"])、ユーザー名/Emailなどが含まれます。この設定は、システム全体やグローバルの設定 (~/.gitconfig) よりも優先されます。 |
description | リポジトリの説明ファイル | 主にGitWebという古いWebインターフェースで使われる、リポジトリの概要を記述するためのファイルです。現在のGitHubやGitLabでは使用されておらず、通常は編集する必要はありません。 |
hooks | 特定のGit操作時に自動実行されるスクリプト | git commitの直前 (pre-commit) や git push の直前 (pre-push) など、特定のイベントをきっかけに自動で実行されるスクリプトを格納するディレクトリです。コードのフォーマットチェックやテストの自動実行などに利用されます。 |
info | リポジトリの補助的な情報 | 主にexcludeファイルが格納されています。このファイルは.gitignoreとほぼ同じ役割を持ちますが、リポジトリで共有されず、個人の環境でのみ無視したいファイルを指定するために使われます。 |
objects | Gitオブジェクトデータベース本体 | Gitの全データ(コミット、ツリー、ブロブ)が格納される、リポジトリの最も重要な核となる部分です。オブジェクトは内容から算出されたSHA-1ハッシュをIDとして持ち、IDの最初の2文字がディレクトリ名、残りの38文字がファイル名として格納されます。 |
refs | 参照(ポインタ)の格納場所 | コミットのハッシュ値に対する、人間が読みやすい名前(ポインタ)を管理するディレクトリです。 ・ refs/heads/: 各ローカルブランチの最新コミットを指すポインタがファイルとして格納されます。・ refs/tags/: 各タグが指すコミットのポインタが格納されます。・ refs/remotes/: リモート追跡ブランチ(例: origin/main)のポインタが格納されます。 |
参考情報:
- Pro Git Book – 10.1 Gitの内側 – 配管と磁器
Tips
すでにGitで管理されているディレクトリ(例えば、後述するgit cloneで作成したディレクトリ)の中でgit initを実行しないようにしましょう。意図しないリポジトリの二重管理に繋がる可能性があります。
腕試し!
デスクトップに git-practice という名前のディレクトリを作成し、その中で git init を実行して新しいリポジトリを作成してみましょう。
2. git clone:チーム開発に参加する「リポジトリの複製」
概要
GitHubなどのリモートサーバー上にある既存のGitリポジトリを、自分のPCに丸ごと複製(クローン)するためのコマンドです。
利用事例
- 会社のプロジェクトに参加するため、GitHubにあるソースコードを手元にダウンロードしたい。
- オープンソースプロジェクトのコードを読んでみたい、あるいは貢献したい。
実行手順
- GitHubなどで、クローンしたいリポジトリのページを開きます。
- 「Code」ボタンをクリックし、表示されるURL(HTTPSまたはSSH)をコピーします。
- ターミナルで、リポジトリを置きたい場所に移動し、
git cloneコマンドを実行します。 - リポジトリ名のディレクトリが作成され、その中にすべてのファイルと履歴がダウンロードされます。
# コピーしたURLを貼り付ける
your-name@pc:~$ git clone https://github.com/git/git.gitTips
- URLの末尾にディレクトリ名を指定すると、その名前でクローンできます。(例:
git clone <URL> my-awesome-project) - HTTPS vs SSH どっちを使う?
- 初心者のうちは、追加の設定が不要な HTTPS を使うのが最も簡単でおすすめです。SSHはより安全な接続方式ですが、事前に「SSHキー」という認証用の鍵を設定する必要があります。チーム開発に参加する際などに必要になったら、改めて調べてみましょう。
腕試し!
GitHub にあるGit自身の公開リポジトリを、git-official という名前であなたのPCにクローンしてみましょう。
3. git status:変更状況を把握する「健康診断」
概要
現在のリポジトリの「健康診断」をするようなコマンドです。変更されたがまだ記録されていないファイル、Gitに追跡されていない新しいファイルなどを一覧で表示してくれます。
利用事例
- コミット(記録)する前に、どのファイルに変更を加えたか確認したい。
- 作業を中断した後、どこまで進めたかを思い出すきっかけにしたい。
実行手順
リポジトリのディレクトリ内で、いつでも実行できます。
git statusTips
表示されるメッセージは非常に重要です。
Changes not staged for commit: ファイルが変更されたが、まだコミット対象として選択されていない状態。(作業机の上にはあるが、段ボールには入っていない)Changes to be committed:git addされ、次のコミットに含まれる状態。(段ボールに入っている)Untracked files: Gitがまだ管理対象として認識していない新しいファイル。(作業机に新しく現れた、Gitが見たことのないファイル)
腕試し!
先ほど作成した git-practice リポジトリの中に、hello.txt という名前で空のファイルを作成した後、git status を実行して「Untracked files」として表示されることを確認してみましょう。
4. git add:コミットする変更を選ぶ「ステージング」
概要
コミットしたい変更内容を、「ステージングエリア」(段ボール箱)と呼ばれる待機場所に追加するコマンドです。「この変更を次のコミットに含めます」という意思表示にあたります。
利用事例
- いくつかのファイルを修正したが、そのうち特定のファイルだけを先にコミットしたい。
- 新しく作成したファイルを、Gitの管理対象に加えたい。
実行手順
- ファイルを変更または新規作成します。
git statusで変更を確認します。- コミットに含めたいファイルを
git addで指定します。 - 再度
git statusを実行し、ファイルが「Changes to be committed」セクションに移動したことを確認します。
# 特定のファイルだけを追加
git add index.html
# カレントディレクトリ以下のすべての変更を追加(便利ですが注意も必要)
git add .Tips
git add . は、意図しないファイル(一時ファイルや設定ファイルなど)までステージングしてしまう可能性があります。どのファイルが対象になるか、事前にgit statusで確認する癖をつけましょう。
腕試し!
hello.txt に「Hello, Git!」と書き込んで保存した後、git add hello.txt を実行してみましょう。その前後で git status を実行し、表示が「Changes not staged for commit」から「Changes to be committed」に変わることを確認してください。
5. git commit:変更履歴に名前を付けて保存する「コミット」
概要
ステージングエリア(段ボール箱)に追加された変更内容を、メッセージと共にリポジトリ(倉庫)の履歴に正式に記録(コミット)します。これが、プロジェクトの歴史を記録するアルバムに、コメント付きで写真を1枚追加するような「セーブポイント」作成行為です。
利用事例
- 「ログイン機能の実装」など、キリの良い作業単位で履歴を残したい。
実行手順
git addでコミットしたい変更をステージングします。-mオプションに続けて、コミットメッセージを引用符で囲んで指定します。
git commit -m "Webサイトのヘッダーを追加"Tips
コミットメッセージは「何を変更したか」が後から誰でも分かるように、具体的かつ簡潔に書くことが重要です。良いコミットメッセージは、将来の自分やチームメンバーを助けます。
腕試し!
ステージングした hello.txt を、feat: Create hello.txt というコミットメッセージを付けてコミットしてみましょう。コミット後に git status を実行し、「nothing to commit, working tree clean」と表示されることを確認してください。
6. git diff:変更内容を最終確認する「差分表示」
概要
まだステージングしていない変更が、前回コミットした状態からどのように変わったかを具体的に表示するコマンドです。
利用事例
- コミットする直前に、コードの変更内容に誤りがないか最終確認したい。
実行手順
リポジトリのディレクトリ内で実行します。
git diff注意点
git addした後の変更差分を確認したい場合は、git diff --staged(または --cached)を使います。
腕試し!
hello.txt の内容を「Hello, Git World!」に書き換えてから git diff を実行し、変更差分が表示されることを確認してみましょう。
7. git log:過去の歴史を旅する「履歴表示」
概要
これまでのコミット履歴を一覧で表示します。誰が、いつ、どのような変更を行ったかを確認できます。
利用事例
- 過去の変更内容を振り返りたい。
- 特定の変更がいつ行われたかを調査したい。
実行手順
リポジトリのディレクトリ内で実行します。
# すべての履歴を詳細に表示
git log
# 履歴を1行で簡潔に表示(おすすめ)
git log --onelineTips
qキーを押すとログ表示を終了できます。
腕試し!
git log --oneline を実行して、先ほど作成したコミットが1行で表示されることを確認してみましょう。
参考資料
より深く学習したい方は、以下の公式ドキュメントを参照することをお勧めします。
- Pro Git Book – Gitの基本
- https://git-scm.com/book/ja/v2/使い始める-Gitの基本
まとめ:あなたもGit使いへの第一歩!
お疲れ様でした!この記事では、Gitの最も基本的な操作サイクルである以下のコマンドを学びました。
git init/git clone: 履歴を記録する場所(リポジトリ)の準備git status: ファイルの状態確認git add: 記録したい変更の選択git commit: 変更の記録git log: 記録履歴の確認
これらのコマンドは、あなたがこれから何度も使うことになる、いわば「基本の型」です。まずはこの流れを身体に覚えさせることを意識してください。
これであなたもバージョン管理の第一歩を踏み出せましたね!
次のステップへ
基本をマスターした次は、チーム開発に必須の「ブランチ」操作を学びましょう!安全に新しい機能を開発したり、複数の作業を並行して進めたりする方法を、以下の記事で詳しく解説しています。
この記事が役に立ったら、ぜひSNSでシェアしてください!あなたのシェアが、同じように悩む仲間を救います。
本記事をご利用いただくにあたって
この記事は、公開時点(2025年9月)の情報に基づき、正確な情報を提供するよう努めています。
しかし、本記事で解説するソフトウェアやサービスの仕様は日々更新されるため、記事内で紹介している画面や手順が、ご覧いただいている時点では変更されている可能性があります。
もし内容に相違がある場合は、各サービスの最新の公式ドキュメントも併せてご参照ください。本記事の情報を利用される際は、ご自身の判断と責任においてお願いいたします。





