プログラミングをするときに、バージョン管理システムは欠かせない存在です。
バージョン管理システムを使うことで、コードの履歴を確認したり、動かなくなってしまったコードを動くところまで戻すこともできます。
この記事では、そんなバージョン管理システムの主流ツールである『Git』について解説します。
Gitのインストール、メールアドレスの登録などについての初期設定については説明しません。
Gitとは
Gitは、バージョン管理システムの1つです。
ファイルなどの変更履歴を記録することができるので、ファイルを元の状態に戻すことが簡単にできます。
ブランチという機能を使えば、現在の状態を保持したまま、別の開発をすることができます。
GitHubとは
Gitと並んでよく聞くのが『GitHub』です。
GitHubは、Gitを使ったWebサービスで、クラウド上でバージョン管理をすることができます。
用語の説明
Gitを使うには、用語について理解することが大切です。
ここでは、以下の用語について説明します。
- リポジトリ
- コミット
- ブランチ
- マージ
リポジトリ
リポジトリとは、Wikipediaによると
リポジトリまたはレポジトリは、バージョン管理システムでは、ソースやディレクトリ構造のメタデータを格納するデータ構造のこと。
「リポジトリ」の原義は「貯蔵庫」、「保管場所」である。バージョン管理システムではソースコード等の管理対象を留めて場所をリポジトリと呼ぶ。
リポジトリ – Wikipedia
簡単に言うと、リポジトリはファイルやディレクトリの履歴がたまる場所です。ファイルのスナップショットが記録されていきます。
リポジトリにも、『ローカルリポジトリ』と『リモートリポジトリ』があります。
- ローカルリポジトリ:自分のパソコン上のリポジトリ
- リモートリポジトリ:クラウドやサーバ上のリポジトリ
基本的な流れは、ローカルリポジトリで作業を行い、それをリモートリポジトリにアップロードします。
コミット
コミットは、ファイルやディレクトリの追加・変更をリポジトリに保存することです。
コミットをするときには、コミットメッセージというコメントを付けます。
コミットメッセージは、ログの確認のときやファイルの状態を戻すときに重要な役割を果たします。
ブランチ
ブランチは、メインを保持したまま、別の作業をする機能です。
ブランチを使うことで、コードの変更や実験を簡単に行うことができます。
マージ
修正を加えたブランチの内容を別のブランチに統合することをマージといいます。
例えば、新機能の開発をするため、developブランチを作成して作業し、その作業が終了したため、mainブランチに変更内容を反映させるような感じです。
Gitの状態
Gitには、3つの状態があります。
- 作業ディレクトリ:Gitの管理対象の作業をするディレクトリ
- ステージングエリア:コミット前の一時的な保存場所
- Gitレポジトリ:ステージング・エリアのファイル
Gitは、作業ディレクトリから直接リポジトリに登録するのではなく、一度ステージングエリアを経由して登録します。
gitコマンドの説明
git init
Gitを使い始めるには、大きく2つの方法があります。
- ローカルにGitリポジトリを追加する。
- クラウドのGitリポジトリをローカルにコピーする。
個人開発の場合は、クラウドからコピー(git clone)するよりは、ローカルにGitリポジトリを追加する『git init』コマンドを使うことが多いと思います。
『git init』コマンドを実行することで、ディレクトリに隠しフォルダ『.git』が作られます。これがリポジトリになります。
『git init』コマンドを実行するときには、バージョン管理したいディレクトリで実行してください。
git add
『git add』コマンドは、ファイルを作業ディレクトリからステージングエリアへ登録(ステージング)します。
リポジトリに登録(コミット)するには、あらかじめステージングエリアへ登録しておく必要があります。
- 作業ディレクトリで作業
- 変更したファイルをステージングエリアに追加
- ステージングエリアに追加されたファイルをリポジトリに登録
ファイルをステージングエリアに登録するには、『git add』コマンドの後ろに、登録するファイルを指定します。
- git add file
すべてのファイルやディレクトリをまとめて、ステージングエリアに登録することもできます。
- git add -A
次のコマンドも『git add -A』とほぼ同じコマンドになります。
- git add .
git commit
『git commit』コマンドは、『git add』コマンドでステージングエリアに追加されたファイルをリポジトリに登録します。
『-m』オプションを使えば、コミットメッセージを合わせて付けることができます。
- git commit -m “commit message”
『-m』オプションを付けない場合は、コミットメッセージを編集するためにエディタが開きます。
git push
『git push』コマンドは、ローカルリポジトリの内容をリモートリポジトリに送信します。
git branch
ブランチ情報を表示したり、ブランチを作成をすることができます。
『git branch』コマンドを実行すれば、ブランチ一覧を表示することができます。
後ろにブランチ名を指定すれば、新しいブランチを作ることができます。
以下のコマンドを実行すれば『new-branch』というブランチが作成されます。
- git branch new-branch
『-d』オプションを使えば、ブランチを削除できます。以下は、『new-branch』という名前のブランチを削除します。
- git branch -d new-branch
git checkout
『git checkout』コマンドは、ブランチを切り替えることができます。
『-b』オプションを使えば、新たなブランチを作成し、そのブランチに移動することができます。
以下のコマンドは、『develop』というブランチを作成して、そのブランチに移動します。
- git checkout -b develop
以下のコマンドと同じ意味になります。
- git branch develop
- git checkout develop
git merge
ブランチをマージします。
git clone
リモートリポジトリをコピーすることができます。
コピーしたいリモートリポジトリのURLを『git clone』コマンドの後ろにつけて実行します。
git status
変更が加えられたファイルなどを確認することができます。
git log
リポジトリのコミットログを確認することができます。
ログが長い場合は、キーボードの『q』キーを押せば終了します。
git help
Gitコマンドについて、説明を見ることができます。
例えば、『git help add』を実行すれば、『git add』コマンドについての説明を見ることができます。
基本的な使い方
リポジトリを作って、コミットする
- git init
- git add .
- git commit -m “first commit”
リモートリポジトリにプッシュ
- git remote add origin リモートリポジトリのURL
- git branch -M main
- git push -u origin main
『git remote add origin リモートリポジトリのURL』は、リモートリポジトリのURLを『origin』という名前で登録しています。『origin』は、Gitがデフォルトでつける名前です。
これで、リモートリポジトリの長いURLを毎回打たなくても『origin』と打つだけで済みます。
『git branch -M main』は、mainブランチに強制変更します。『-M』は、ブランチを強制的に変更するオプションです。
『git push -u origin main』で、1で登録したリモートリポジトリ(origin=リモートリポジトリのURL)にローカルリポジトリの内容を送信しています。
『-u』オプションを付けることで、次からは『git push』というコマンドだけでリモートリポジトリにプッシュすることができます。
新しいブランチを作成して、そのブランチで作業してマージ
- git checkout -b develop
- ~作業~
- git checkout main
- git merge develop
新しい機能を開発するために、『develop』ブランチを作成して、『develop』ブランチで作業後、『main』ブランチに変更内容をマージします。