開発者の必須ツール!Gitの基本コマンドをマスターしよう
開発者の必須ツール!Gitの基本コマンドをマスターしよう
こんにちは!開発者の皆さん、あるいはこれからプログラミングを始める皆さん。コードを書く上で切っても切り離せないのが「バージョン管理」です。そして、そのデファクトスタンダードとも言えるツールがGitです。
Gitを使いこなせば、ファイルの変更履歴を管理したり、複数人での共同開発をスムーズに進めたり、過去のバージョンに簡単に戻したりと、多くのメリットがあります。
「Gitって難しそう…」と感じる方もいるかもしれませんが、ご安心ください!今回は、Gitを使い始める上で必要不可欠な基本コマンドに焦点を当てて、一つずつ丁寧に解説していきます。
1. プロジェクトを開始する:リポジトリの作成と初期化
新しいプロジェクトでGitのバージョン管理を始めるには、まず「リポジトリ」を作成する必要があります。リポジトリは、あなたのプロジェクトの全履歴が保存される場所だと考えてください。
git init:ローカルに新しいリポジトリを作る
現在の作業ディレクトリをGitリポジトリとして初期化します。プロジェクトを始めたばかりで、まだどこにも公開していない状態の時に使います。
# まずはプロジェクトのフォルダを作成し、その中へ移動
mkdir my_awesome_project
cd my_awesome_project
# ここでGitリポジトリを初期化!
git init
これでmy_awesome_projectフォルダ内に.gitという隠しフォルダが作成され、Gitの管理下に入ります。
git clone <リポジトリのURL>:既存のリポジトリをコピーする
GitHubなどに既存のリポジトリがある場合、それをローカル環境にコピーして作業を始める際に使います。共同開発に参加する時や、オープンソースプロジェクトを試したい時に便利です。
# 例えばGitHubにあるプロジェクトをコピーする
git clone https://github.com/ユーザー名/リポジトリ名.git
これで指定したURLのリポジトリが、あなたのPCに丸ごとコピーされます。
2. 変更を記録する:ステージングとコミット
コードを書き進めてファイルに変更を加えたら、その変更をGitに「記録」します。この記録の単位を「コミット」と呼びます。コミットは、プロジェクトの「スナップショット」を取るようなイメージです。
git status:現在の状況を確認する
変更を記録する前に、まず現在のファイルの状態を確認するのが基本です。どのファイルが変更されたのか、ステージングされているのか(コミットの準備ができているのか)を一目で確認できます。
git status
変更があったファイルや、新しく追加されたファイルが表示されます。
git add <ファイル名>:変更をステージングエリアへ追加する
コミットしたい変更を選択する作業を「ステージング」と言います。ステージングエリアは、次のコミットに含める変更を一時的に置いておく場所です。
# 特定のファイルだけをステージングしたい場合
git add index.html
# 変更があった全てのファイルをまとめてステージングしたい場合
git add .
git add .は非常によく使うコマンドなので覚えておくと便利です。
git commit -m "コミットメッセージ":変更を確定(コミット)する
ステージングエリアに追加した変更を、リポジトリに正式に記録します。コミットする際には、その変更内容を簡潔に説明する「コミットメッセージ」を添えるのがルールです。
git commit -m "feat: ナビゲーションバーを追加"
良いコミットメッセージは、後から履歴を見返した時に何の変更だったか分かりやすくなります。例えば、「fix: バグ修正」や「refactor: コードのリファクタリング」など、プレフィックスを付けるのが一般的です。
3. 履歴を辿る:コミット履歴の確認
これまでのコミットがどのように行われてきたか、その履歴を確認することも非常に重要です。
git log:コミット履歴を表示する
これまでのコミットが一覧で表示されます。いつ、誰が、どんな変更をコミットしたのかが分かります。
git log
コミットのハッシュ値(一意なID)、作成者、日付、コミットメッセージが表示されます。オプションを追加すると、表示形式を変えることも可能です。(例: git log --oneline で1行表示)
4. 開発を分岐する:ブランチの操作
Gitの強力な機能の一つが「ブランチ」です。ブランチを使うと、メインの開発ライン(通常はmainまたはmasterブランチ)に影響を与えずに、新しい機能の開発やバグ修正などの作業を並行して進めることができます。
git branch:ブランチの一覧を見る
現在リポジトリに存在するブランチを確認できます。現在アクティブなブランチには*が付きます。
git branch
git branch <新しいブランチ名>:新しいブランチを作る
新しいブランチを作成しますが、この時点ではまだそのブランチに移動していません。
git branch feature/user-profile
git checkout <ブランチ名> / git switch <ブランチ名>:ブランチを切り替える
作成したブランチに実際に移動(切り替え)します。Git 2.23以降ではgit switchが推奨されています。
# 従来のコマンド
git checkout feature/user-profile
# 新しい推奨コマンド
git switch feature/user-profile
git checkout -b <新しいブランチ名>:ブランチ作成と同時に切り替える
新しいブランチを作成し、すぐにそのブランチに切り替えるショートカットコマンドです。
git checkout -b feature/new-design
git merge <マージしたいブランチ名>:変更を統合する
別ブランチで行った作業が完了したら、その変更をメインブランチ(または別のブランチ)に統合します。これを「マージ」と呼びます。
# 例: feature/new-designブランチでの作業が完了し、
# mainブランチにその変更を取り込みたい場合
# まずはmainブランチに移動
git switch main
# feature/new-designブランチの変更をmainにマージ
git merge feature/new-design
コンフリクト(競合)が発生することもありますが、その解決方法はまた別の機会に。
5. コードを共有する:リモートリポジトリとの連携
GitHubやGitLab、Bitbucketといった「リモートリポジトリ」サービスと連携することで、世界中の開発者とコードを共有したり、チームで共同開発を進めたりできます。
git remote add origin <リモートリポジトリのURL>:リモートリポジトリを追加する
ローカルリポジトリとリモートリポジトリを紐付けます。「origin」は通常、メインのリモートリポジトリに付けられる慣習的な名前です。
# GitHubなどでリポジトリを作成し、表示されるURLをコピーして貼り付ける
git remote add origin https://github.com/your-username/your-repo.git
git push -u origin <ブランチ名>:変更をリモートへ送る
ローカルでコミットした変更を、リモートリポジトリにアップロードします。
# 初回プッシュ時のみ -u オプションを付けて、上流ブランチを設定する
git push -u origin main
# 2回目以降はシンプルに
git push
git pull origin <ブランチ名>:リモートから変更を取得する
リモートリポジトリに他の人が加えた変更や、別の環境からプッシュした自身の変更を、ローカルリポジトリにダウンロードしてマージします。
git pull origin main
これで、リモートリポジトリの最新の状態があなたのローカルにも反映されます。
実践!簡単な開発フローの例
では、ここまでのコマンドを使って、実際に簡単なファイルを管理してみましょう。
-
新しいプロジェクトを開始
mkdir my_blog_project cd my_blog_project git init -
HTMLファイルを作成し、内容を記述
echo "<!DOCTYPE html><html><head><title>My Blog</title></head><body><h1>Welcome to My Blog!</h1></body></html>" > index.html -
最初のコミット
git add index.html git commit -m "feat: Initial setup, add basic index.html" -
新しい機能(CSS追加)のためにブランチを作成・移動
git checkout -b feature/add-styles -
CSSファイルを作成し、内容を記述
echo "body { font-family: sans-serif; background-color: #f0f0f0; }" > style.css -
HTMLにCSSをリンク
# index.htmlをエディタで開き、<head>内に以下を追加 # <link rel="stylesheet" href="style.css"> -
CSSの追加とHTMLの変更をコミット
git add . # style.css と index.html の両方をステージング git commit -m "feat: Add basic styles and link to index.html" -
mainブランチに戻り、変更を統合git switch main git merge feature/add-styles -
(任意)リモートリポジトリにプッシュ
# GitHubなどでリポジトリを作成し、そのURLをコピー git remote add origin <あなたのリポジトリURL> git push -u origin main
まとめ
今回はGitの基本的なコマンドと、それを使った一連の開発フローをご紹介しました。
-
git init/git clone: プロジェクトの開始 -
git status/git add/git commit: 変更の記録 -
git log: 変更履歴の確認 -
git branch/git checkout/git merge: ブランチを使った並行開発 -
git remote add/git push/git pull: リモートリポジトリとの連携
これらのコマンドを覚えるだけでも、Gitを使ったバージョン管理が格段にスムーズになります。最初は戸惑うこともあるかもしれませんが、実際に手を動かして試すことが一番の近道です。
Gitは非常に奥深いツールですが、まずは基本から始めて、少しずつ慣れていきましょう!
Discussion