Skip to content

Gitの基本操作をマスターしよう(前編)

公開日:December 12, 2024更新日:December 12, 2024
Git📄

この章では、いよいよ Git の基本的な使い方を学んでいきましょう!ここでは、自分のパソコン上(ローカル環境)で Git を操作する方法を説明します。

リポジトリの作成(git init

Git でファイルの変更履歴を管理するためには、まず「リポジトリ」を作成する必要があります。リポジトリとは、ファイルの変更履歴を記録・保管する場所のことです。

リポジトリを作成するには、主に以下の2つの方法があります。

  • 新しいディレクトリから始める場合: これから新しくプロジェクトを始める場合
  • 既存のディレクトリをリポジトリにする場合: すでにファイルが存在するディレクトリを Git で管理したい場合

それぞれの手順を見ていきましょう。

新しいディレクトリから始める場合

  1. 新しいディレクトリを作成: まずは、Git で管理したいファイルを置くためのディレクトリを作成します。ここでは、例として my-project という名前のディレクトリを作成します。

    ターミナルを開き、以下のコマンドを実行します。

    bash
    mkdir my-project
    cd my-project

    mkdir はディレクトリを作成するコマンド、cd はディレクトリを移動するコマンドです。

  2. リポジトリの作成: 次に、作成したディレクトリ内で git init コマンドを実行します。

    bash
    git init

    このコマンドを実行すると、my-project ディレクトリ内に .git という名前の隠しディレクトリが作成されます。これが、Git リポジトリの実体です。この中に、ファイルの変更履歴などの情報が保存されていきます。

    以下のようなメッセージが表示されれば成功です。

    Initialized empty Git repository in /path/to/my-project/.git/

    これで、my-project ディレクトリが Git リポジトリになりました!

既存のディレクトリをリポジトリにする場合

すでにファイルが存在するディレクトリを Git リポジトリにする場合も、手順はほとんど同じです。

  1. 既存のディレクトリに移動: ターミナルで、Git で管理したいディレクトリに移動します。例えば、existing-project という名前のディレクトリをリポジトリにする場合は、以下のコマンドを実行します。

    bash
    cd existing-project
  2. リポジトリの作成: ディレクトリ内で git init コマンドを実行します。

    bash
    git init

    これで、existing-project ディレクトリが Git リポジトリになりました!

ファイルの変更を記録しよう

リポジトリを作成したら、ファイルの変更を記録してみましょう。Git では、ファイルの変更を記録することを「コミットする」と言います。

ここでは、以下の流れでコミットの方法を説明します。

  1. ステージングエリアって何?
  2. 変更をステージする(git add
  3. 変更を記録する(git commit
  4. コミットメッセージの書き方

ステージングエリアって何?

Git には「ステージングエリア」という、少し特殊な概念があります。ステージングエリアは、コミットしたい変更を一時的に保管しておく場所です。

なぜこのような仕組みがあるのでしょうか?

例えば、複数のファイルを変更した場合、一部のファイルだけを先にコミットしたいことがありますよね。そんなときに、ステージングエリアが活躍します。

ステージングエリアを使うと、コミットしたい変更だけを選んで、コミットすることができます。

変更をステージする(git add

ファイルの変更をコミットする前に、まずはステージングエリアに変更を登録する必要があります。この操作を「ステージする」と言います。

ステージするには、git add コマンドを使います。

  1. ファイルを作成・変更: まずは、リポジトリ内に新しいファイルを作成するか、既存のファイルを変更してみましょう。ここでは、例として my-project リポジトリ内に index.html というファイルを作成し、簡単な HTML を書いてみます。

    html
    <!DOCTYPE html>
    <html>
    <head>
      <title>My Project</title>
    </head>
    <body>
      <h1>Hello, Git!</h1>
    </body>
    </html>
  2. 変更をステージ:index.html を保存したら、ターミナルで以下のコマンドを実行します。

    bash
    git add index.html

    これで、index.html の変更がステージングエリアに登録されました。

    複数のファイルをまとめてステージしたい場合は、以下のようにファイル名を複数指定します。

    bash
    git add file1.txt file2.txt

    または、以下のコマンドで、リポジトリ内のすべての変更をまとめてステージすることもできます。

    bash
    git add .

    git add . は全ての変更をステージングエリアに追加しますが、無視したいファイルまで追加してしまう可能性があるので、注意が必要です。

変更を記録する(git commit

ステージングエリアに変更を登録したら、いよいよコミットです!コミットするには、git commit コマンドを使います。

ターミナルで以下のコマンドを実行します。

bash
git commit -m "最初のコミット"

-m オプションの後には、コミットメッセージを記述します。コミットメッセージとは、そのコミットで行った変更内容を説明するメッセージのことです。

上記のように、コミットメッセージをコマンドラインで記述することもできますが、-mを付けない場合は、テキストエディタでコミットメッセージを編集できます。 (テキストエディタはGitのインストール時に選択できます。選択していない場合はVimになります。)

bash
git commit

コミットメッセージの書き方

コミットメッセージは、他の人が見たときに、そのコミットで行った変更内容がすぐに理解できるように書くことが重要です。

一般的には、以下のような形式で書くことが多いです。

<件名>

<本文>(省略可)
  • 件名: 変更内容を簡潔に要約したものを書きます。
  • 本文: 必要に応じて、変更理由や詳細な説明などを書きます。

例えば、index.html を作成したときのコミットメッセージは、以下のように書くことができます。

Create index.html

index.html を新規作成し、Hello, Git! と表示するようにした。

良いコミットメッセージを心がけることで、後で変更履歴を追跡しやすくなり、他の人との共同作業もスムーズになります。

変更内容を確認しよう

ファイルの変更を記録したら、現在の状態や変更内容を確認する方法も覚えておきましょう。

現在の状態を確認する(git status

git status コマンドを使うと、リポジトリの現在の状態を確認できます。

ターミナルで以下のコマンドを実行してみましょう。

bash
git status

以下のようなメッセージが表示されるはずです。

On branch main

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        index.html

nothing added to commit but untracked files present (use "git add" to track)

このメッセージから、以下のことがわかります。

  • 現在 main ブランチにいること(On branch main
  • まだコミットされていないこと(No commits yet
  • index.html が未追跡ファイルであること(Untracked files: index.html
    • 未追跡ファイルとは、Git がまだ変更履歴を記録していないファイルのことです。

ではここで、index.htmlをステージングエリアに追加してみましょう。

bash
git add index.html

そして、再度 git status を実行します。

bash
git status

すると、表示が変わります。

On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   index.html

このメッセージから、以下のことがわかります。

  • 現在 main ブランチにいること(On branch main
  • まだコミットされていないこと(No commits yet
  • index.html がコミット対象になっていること(Changes to be committed: new file: index.html

さらに、index.htmlに以下の変更を加えてみましょう。

diff
--- a/index.html
+++ b/index.html
@@ -4,6 +4,6 @@
     <title>My Project</title>
   </head>
   <body>
-    <h1>Hello, Git!</h1>
+    <h1>Hello, Git! from new-feature</h1>
   </body>
 </html>

そして、再度 git status を実行します。

bash
git status

すると、表示が変わります。

On branch main

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   index.html

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   index.html

このメッセージから、以下のことがわかります。

  • 現在 main ブランチにいること(On branch main
  • まだコミットされていないこと(No commits yet
  • index.html がコミット対象になっていること(Changes to be committed: new file: index.html
  • index.html が変更されていること(Changes not staged for commit: modified: index.html

git status コマンドは、Git で作業する上で最もよく使うコマンドの一つです。こまめに実行して、リポジトリの状態を把握する癖をつけましょう。

変更内容を詳しく見る(git diff

git diff コマンドを使うと、ファイルの変更内容を詳しく確認できます。

まだ何もコミットしていない状態、もしくはコミット後に追記や修正をした状態で、以下のコマンドを実行してみましょう。

bash
git diff

先程編集した、index.htmlの差分が表示されるはずです。

diff
diff --git a/index.html b/index.html
index e2b998d..c6eb24f 100644
--- a/index.html
+++ b/index.html
@@ -4,6 +4,6 @@
     <title>My Project</title>
   </head>
   <body>
-    <h1>Hello, Git!</h1>
+    <h1>Hello, Git! from new-feature</h1>
   </body>
 </html>

この表示から、index.html<h1>Hello, Git!</h1> の部分が <h1>Hello, Git! from new-feature</h1> に変更されたことがわかります。

git diff は、これからコミットしようとしている変更内容を確認したいときによく使います。

また、git diffに続けてgit addでステージングエリアに追加したファイル名を指定すると、ステージングエリアに追加されたファイルの差分を表示できます。 先程編集し、まだステージングエリアに追加していないindex.htmlをステージングエリアに追加して、確認してみましょう。

bash
git add index.html
git diff index.html

先程と同じくindex.htmlの差分が表示されます。

diff
diff --git a/index.html b/index.html
index e2b998d..c6eb24f 100644
--- a/index.html
+++ b/index.html
@@ -4,6 +4,6 @@
     <title>My Project</title>
   </head>
   <body>
-    <h1>Hello, Git!</h1>
+    <h1>Hello, Git! from new-feature</h1>
   </body>
 </html>