この章では、いよいよ Git の基本的な使い方を学んでいきましょう!ここでは、自分のパソコン上(ローカル環境)で Git を操作する方法を説明します。
リポジトリの作成(git init
)
Git でファイルの変更履歴を管理するためには、まず「リポジトリ」を作成する必要があります。リポジトリとは、ファイルの変更履歴を記録・保管する場所のことです。
リポジトリを作成するには、主に以下の2つの方法があります。
- 新しいディレクトリから始める場合: これから新しくプロジェクトを始める場合
- 既存のディレクトリをリポジトリにする場合: すでにファイルが存在するディレクトリを Git で管理したい場合
それぞれの手順を見ていきましょう。
新しいディレクトリから始める場合
新しいディレクトリを作成: まずは、Git で管理したいファイルを置くためのディレクトリを作成します。ここでは、例として
my-project
という名前のディレクトリを作成します。ターミナルを開き、以下のコマンドを実行します。
bashmkdir my-project cd my-project
mkdir
はディレクトリを作成するコマンド、cd
はディレクトリを移動するコマンドです。リポジトリの作成: 次に、作成したディレクトリ内で
git init
コマンドを実行します。bashgit init
このコマンドを実行すると、
my-project
ディレクトリ内に.git
という名前の隠しディレクトリが作成されます。これが、Git リポジトリの実体です。この中に、ファイルの変更履歴などの情報が保存されていきます。以下のようなメッセージが表示されれば成功です。
Initialized empty Git repository in /path/to/my-project/.git/
これで、
my-project
ディレクトリが Git リポジトリになりました!
既存のディレクトリをリポジトリにする場合
すでにファイルが存在するディレクトリを Git リポジトリにする場合も、手順はほとんど同じです。
既存のディレクトリに移動: ターミナルで、Git で管理したいディレクトリに移動します。例えば、
existing-project
という名前のディレクトリをリポジトリにする場合は、以下のコマンドを実行します。bashcd existing-project
リポジトリの作成: ディレクトリ内で
git init
コマンドを実行します。bashgit init
これで、
existing-project
ディレクトリが Git リポジトリになりました!
ファイルの変更を記録しよう
リポジトリを作成したら、ファイルの変更を記録してみましょう。Git では、ファイルの変更を記録することを「コミットする」と言います。
ここでは、以下の流れでコミットの方法を説明します。
- ステージングエリアって何?
- 変更をステージする(
git add
) - 変更を記録する(
git commit
) - コミットメッセージの書き方
ステージングエリアって何?
Git には「ステージングエリア」という、少し特殊な概念があります。ステージングエリアは、コミットしたい変更を一時的に保管しておく場所です。
なぜこのような仕組みがあるのでしょうか?
例えば、複数のファイルを変更した場合、一部のファイルだけを先にコミットしたいことがありますよね。そんなときに、ステージングエリアが活躍します。
ステージングエリアを使うと、コミットしたい変更だけを選んで、コミットすることができます。
変更をステージする(git add
)
ファイルの変更をコミットする前に、まずはステージングエリアに変更を登録する必要があります。この操作を「ステージする」と言います。
ステージするには、git add
コマンドを使います。
ファイルを作成・変更: まずは、リポジトリ内に新しいファイルを作成するか、既存のファイルを変更してみましょう。ここでは、例として
my-project
リポジトリ内にindex.html
というファイルを作成し、簡単な HTML を書いてみます。html<!DOCTYPE html> <html> <head> <title>My Project</title> </head> <body> <h1>Hello, Git!</h1> </body> </html>
変更をステージ:
index.html
を保存したら、ターミナルで以下のコマンドを実行します。bashgit add index.html
これで、
index.html
の変更がステージングエリアに登録されました。複数のファイルをまとめてステージしたい場合は、以下のようにファイル名を複数指定します。
bashgit add file1.txt file2.txt
または、以下のコマンドで、リポジトリ内のすべての変更をまとめてステージすることもできます。
bashgit 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>