疑問
Gitの基本的な使い方を学びたいのですが、どのようなコマンドや操作が必要なのでしょうか?バージョン管理の基本から、ブランチやマージまで一緒に学んでいきましょう。
導入
Gitは、ソフトウェア開発において最も広く使用されているバージョン管理システムです。コードの変更履歴を追跡し、複数の開発者が協力して作業できるようにする強力なツールです。
Gitを使いこなすことで、コードの変更を安全に管理し、過去のバージョンに戻ったり、複数の機能を並行して開発したりすることが可能になります。本記事では、Gitの基本的な概念から、実践的なコマンド、ブランチ戦略まで、段階的に解説していきます。
解説
1. Gitとは何か
Gitは、分散型バージョン管理システムです。ファイルの変更履歴を記録し、いつでも過去の状態に戻すことができます。
Gitの主な特徴
- 分散型: 各開発者がローカルに完全な履歴を持つ
- 高速: ほとんどの操作がローカルで実行される
- ブランチ機能: 複数の開発ラインを並行して管理
- 統合性: データの整合性を保証
参考リンク: Git公式サイト
2. Gitの初期設定
Gitを使い始める前に、基本的な設定を行いましょう。
# ユーザー名とメールアドレスを設定
git config --global user.name "あなたの名前"
git config --global user.email "your.email@example.com"
# 設定を確認
git config --listよく使う設定
# デフォルトのブランチ名をmainに設定
git config --global init.defaultBranch main
# カラー出力を有効化
git config --global color.ui auto
# エディタを設定(例:VS Code)
git config --global core.editor "code --wait"3. リポジトリの作成と初期化
新しいリポジトリを作成する
# 新しいディレクトリでリポジトリを初期化
mkdir my-project
cd my-project
git init
# 既存のディレクトリでリポジトリを初期化
cd existing-project
git init既存のリモートリポジトリをクローンする
# GitHubからリポジトリをクローン
git clone https://github.com/username/repository.git
# 特定のディレクトリ名でクローン
git clone https://github.com/username/repository.git my-folder4. 基本的なGitのワークフロー
Gitの基本的なワークフローは以下の通りです。
1. 作業ディレクトリでファイルを編集
2. 変更をステージングエリアに追加 (
git add)3. 変更をコミット (
git commit)4. リモートリポジトリにプッシュ (
git push)ファイルの状態を確認する
# ファイルの状態を確認
git status
# 変更内容を確認
git diff
# ステージング済みの変更を確認
git diff --staged5. ファイルの追加とコミット
ファイルをステージングエリアに追加
# 特定のファイルを追加
git add filename.txt
# すべての変更を追加
git add .
# 特定の拡張子のファイルを追加
git add *.jsコミットを作成する
# コミットメッセージを指定してコミット
git commit -m "初回コミット: プロジェクトのセットアップ"
# 詳細なコミットメッセージを編集
git commit
# 変更をステージングしてコミット(新規ファイルは除く)
git commit -am "機能追加: ユーザー認証機能"良いコミットメッセージの書き方
# 良い例
git commit -m "機能追加: ログイン機能を実装"
git commit -m "バグ修正: メモリリークを解消"
git commit -m "リファクタリング: コードの可読性を向上"
# 悪い例
git commit -m "更新"
git commit -m "修正"
git commit -m "いろいろ変更"6. 履歴の確認
コミット履歴を確認する
# コミット履歴を表示
git log
# 1行で表示
git log --oneline
# グラフ形式で表示
git log --graph --oneline --all
# 特定のファイルの履歴を確認
git log filename.txt
# 変更内容も一緒に表示
git log -p特定のコミットを確認する
# コミットの詳細を確認
git show <commit-hash>
# 短縮ハッシュで確認
git show abc12347. 変更の取り消し
作業ディレクトリの変更を取り消す
# ファイルの変更を取り消す(注意:未保存の変更が失われます)
git checkout -- filename.txt
# すべての変更を取り消す
git checkout -- .
# 新しい方法(Git 2.23以降)
git restore filename.txt
git restore .ステージングを取り消す
# ステージングからファイルを削除
git reset HEAD filename.txt
# すべてのステージングを取り消す
git reset HEAD
# 新しい方法
git restore --staged filename.txtコミットを取り消す
# 最後のコミットを取り消す(変更は保持)
git reset --soft HEAD~1
# 最後のコミットを取り消す(変更も取り消す)
git reset --hard HEAD~1
# 注意:既にプッシュしたコミットは取り消さないこと8. ブランチの操作
ブランチは、メインのコードベースから分岐して、独立した開発ラインを作成する機能です。
ブランチの作成と切り替え
# 新しいブランチを作成
git branch feature-branch
# ブランチを作成して切り替え
git checkout -b feature-branch
# 新しい方法(Git 2.23以降)
git switch -c feature-branch
# ブランチの一覧を表示
git branch
# リモートブランチも含めて表示
git branch -aブランチの切り替え
# ブランチを切り替え
git checkout main
git switch main
# 前のブランチに戻る
git checkout -
git switch -ブランチのマージ
# mainブランチに切り替え
git checkout main
# feature-branchをマージ
git merge feature-branch
# マージコミットを作成せずにマージ(fast-forward)
git merge --ff-only feature-branch9. リモートリポジトリの操作
リモートリポジトリを追加する
# リモートリポジトリを追加
git remote add origin https://github.com/username/repository.git
# リモートリポジトリを確認
git remote -v
# リモートリポジトリのURLを変更
git remote set-url origin https://github.com/username/new-repository.gitプッシュとプル
# リモートリポジトリにプッシュ
git push origin main
# 初回プッシュ(上流ブランチを設定)
git push -u origin main
# リモートリポジトリから変更を取得
git pull origin main
# フェッチのみ(マージしない)
git fetch origin10. よくある操作とトラブルシューティング
変更を一時的に保存する(stash)
# 変更を一時的に保存
git stash
# メッセージ付きで保存
git stash save "作業中の変更"
# 保存した変更を確認
git stash list
# 保存した変更を適用
git stash apply
# 保存した変更を適用して削除
git stash pop
# すべてのstashを削除
git stash clearコンフリクトの解決
# マージ時にコンフリクトが発生した場合
# 1. コンフリクトファイルを編集
# 2. コンフリクトを解決
# 3. ファイルをステージング
git add conflicted-file.txt
# 4. マージを完了
git commitファイルをGitから削除する
# ファイルを削除してステージング
git rm filename.txt
git commit -m "ファイルを削除"
# ファイルは残してGitからだけ削除
git rm --cached filename.txt11. ベストプラクティス
1. 小さなコミットを心がける: 1つのコミットに1つの変更
2. 意味のあるコミットメッセージ: 何を変更したか明確に
3. 定期的にコミット: 作業の区切りでコミット
4. ブランチを活用: 機能ごとにブランチを作成
5. プルを忘れずに: 作業前に最新の変更を取得
6. **
.gitignoreを設定**: 不要なファイルを追跡しない.gitignoreの例
# 依存関係
node_modules/
venv/
# ビルド成果物
*.class
*.exe
*.o
# IDE設定
.vscode/
.idea/
# OS固有ファイル
.DS_Store
Thumbs.db
# 環境変数
.env
.env.local参考リンク: GitHub - gitignore
12. 実践的なワークフロー例
機能開発のワークフロー
# 1. 最新の変更を取得
git checkout main
git pull origin main
# 2. 新しいブランチを作成
git checkout -b feature/new-feature
# 3. コードを編集してコミット
git add .
git commit -m "機能追加: 新機能を実装"
# 4. リモートにプッシュ
git push -u origin feature/new-feature
# 5. プルリクエストを作成(GitHub上で)
# 6. マージ後、mainブランチに戻る
git checkout main
git pull origin main
# 7. 不要なブランチを削除
git branch -d feature/new-feature
git push origin --delete feature/new-feature参考リンク: Git公式ドキュメント
まとめ
Gitは、ソフトウェア開発において不可欠なバージョン管理システムです。基本的なワークフローは、ファイルを編集→git addでステージング→git commitでコミット→git pushでリモートにプッシュという流れです。
ブランチを活用することで、複数の機能を並行して開発でき、安全にコードを管理できます。小さなコミットを心がけ、意味のあるコミットメッセージを書くことで、後から履歴を追跡しやすくなります。
実践的なプロジェクトで積極的にGitを使用し、日々の開発に組み込むことで、自然と使いこなせるようになります。