この資料では、ソフトウェア開発で広く使われているバージョン管理システムであるGitの基本的な使い方を学びます。
Gitを使うことで、コードの変更履歴を効率的に管理し、チームでの開発をスムーズに進めることができます。
Gitは、Linus Torvalds氏(Linuxの開発者)によって開発された、分散型バージョン管理システムです。
Gitを使用するには、まずお使いのコンピュータにGitをインストールする必要があります。
git --version
を実行して確認できます。もしインストールされていなければ、xcode-select --install
でインストールできます。また、Homebrew (brew install git
) や公式インストーラーも利用できます。sudo apt-get install git
(Debian/Ubuntu), sudo yum install git
(Fedora/RHEL)。インストール後、ターミナルまたはコマンドプロンプトで以下のコマンドを実行し、バージョンが表示されれば成功です。
git --version
Gitを使い始める前に、自身の情報を設定しておきましょう。これは、コミット(変更履歴の記録)を行う際に、誰が変更したかを記録するために必要です。
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
補足: --global
オプションは、この設定がコンピュータ上のすべてのGitリポジトリに適用されることを意味します。特定のプロジェクトだけで異なる設定を使いたい場合は、--global
を付けずにそのプロジェクトのディレクトリ内で設定します。
Gitを使った開発の基本的な流れは以下のようになります。
git init
)既存のフォルダをGitで管理したい場合、そのフォルダ内で以下のコマンドを実行します。
cd path/to/your/project
git init
これにより、プロジェクトフォルダ内に .git
という隠しフォルダが作成され、Gitがそのフォルダ内の変更を追跡し始めます。
git clone
)GitHubなどのリモートリポジトリからプロジェクトのコピーをローカルに取得する場合に使用します。
git clone [リモートリポジトリのURL]
例:
git clone https://github.com/ユーザー名/リポジトリ名.git
これにより、指定されたリポジトリ名のフォルダが作成され、その中にプロジェクトのすべてのファイルとGitの履歴がダウンロードされます。
プロジェクト内のファイルを自由に編集します。
git add
)ファイルを変更したら、その変更を次のコミットに含める準備をします。この状態を「ステージングエリアに追加する」と言います。
# 特定のファイルをステージングする
git add filename.txt
# 複数のファイルをステージングする
git add file1.txt file2.js
# すべての変更をステージングする(注意して使用)
git add .
git add .
は、カレントディレクトリ以下の全ての新規ファイルと変更されたファイルをステージングします。意図しないファイルまで含めないよう注意しましょう。
git commit
)ステージングエリアにある変更を、リポジトリの履歴として正式に記録します。コミットには、その変更が何を意味するかを説明するメッセージを必ず含めます。
git commit -m "コミットメッセージ"
良いコミットメッセージの例:
feat: ユーザー登録機能を追加
fix: ログイン時のバグを修正
docs: README.mdを更新
refactor: コードの可読性を向上
git push
)ローカルでのコミットをGitHubなどのリモートリポジトリにアップロードします。これにより、チームメンバーと変更を共有できます。
git push origin master
通常、初めてプッシュする際には git push -u origin master
のように -u
(--set-upstream
) オプションを付けて、ローカルブランチとリモートブランチを紐付けます。2回目以降は git push
だけでOKです。
近年では、master
の代わりに main
というブランチ名が使われることが多いです。ご自身のプロジェクトに合わせて置き換えてください。
git pull
)他のメンバーがリモートリポジトリにプッシュした変更を、自分のローカルリポジトリに取り込みます。
git pull origin master
重要: 作業を開始する前や、コミットをプッシュする前には、常に git pull
を実行して最新の状態にしておくことを強く推奨します。これにより、マージコンフリクト(競合)を未然に防ぎやすくなります。
git status
)現在のリポジトリの状態(変更されたファイル、ステージング済みのファイル、追跡されていないファイルなど)を確認できます。作業の途中で頻繁に使うコマンドです。
git status
git diff
)ファイルの変更内容を詳細に確認できます。
# ワークディレクトリとステージングエリアの差分
git diff
# ステージングエリアと最新コミットの差分
git diff --staged
git log
)これまでのコミット履歴を一覧表示します。
git log
# 簡潔に表示
git log --oneline
# グラフ形式で表示(ブランチの流れも分かる)
git log --graph --oneline --all
git restore --staged
/ git reset HEAD
)ステージングエリアからファイルを取り除きます。ファイルの内容自体は変更されません。
git restore --staged filename.txt
# または(古いバージョンでよく使われた)
git reset HEAD filename.txt
git restore
/ git checkout
)作業ディレクトリで行った変更を破棄し、最新のコミット時点の状態に戻します。この操作は元に戻せないので注意してください。
git restore filename.txt
# または(古いバージョンでよく使われた)
git checkout -- filename.txt
注意: git reset
や git revert
など、さらに強力な「元に戻す」コマンドもありますが、これらは履歴を書き換えたりするため、理解せずに使うと問題を引き起こす可能性があります。特にチーム開発では慎重に使いましょう。
ブランチは、既存のコードの流れから分岐して、独立した作業を行うための機能です。これにより、メインの開発ラインを邪魔することなく、新機能開発やバグ修正を行えます。
git branch
)ローカルにあるブランチの一覧と、現在作業しているブランチ(アスタリスクで表示)を確認します。
git branch
git branch
)現在のブランチから新しいブランチを作成します。
git branch feature/new-feature
git checkout
/ git switch
)作業するブランチを切り替えます。
git checkout feature/new-feature
# または(新しいバージョンで推奨)
git switch feature/new-feature
新しいブランチを作成し、すぐにそのブランチに切り替えたい場合は、git checkout -b feature/new-feature
(または git switch -c feature/new-feature
) とすると便利です。
git merge
)別のブランチの変更を現在のブランチに統合します。
# まず、統合したいブランチに切り替える(例:masterまたはmainブランチ)
git switch master
# その後、変更を取り込みたいブランチをマージする
git merge feature/new-feature
マージ時にコンフリクト(競合)が発生することがあります。これは、同じファイルの同じ箇所を複数のブランチで異なる変更をした場合に起こります。その際は、手動でファイルを編集して競合を解消し、再度コミットする必要があります。
git branch -d
)マージ済みのブランチを削除します。
git branch -d feature/new-feature
まだマージされていないブランチを強制的に削除したい場合は、-D
オプションを使います (git branch -D feature/new-feature
)。ただし、これは変更が失われる可能性があるため注意が必要です。
この資料では、Gitの基本的な概念と主要なコマンドについて学びました。
git init
/ git clone
: リポジトリの初期化/取得git add
: 変更のステージングgit commit
: 変更の記録git push
/ git pull
: リモートリポジトリとの同期git status
: 状態の確認git diff
: 変更内容の確認git log
: 履歴の確認git branch
/ git switch
/ git merge
: ブランチの操作Gitは非常に強力なツールですが、最初は複雑に感じるかもしれません。実際に手を動かし、繰り返し練習することで、徐々に慣れていきます。GitHubやGitLabなどのサービスと連携することで、より便利にチーム開発を進められます。