Git

開発ツール | IT用語集

この用語をシェア

概要

Gitは分散バージョン管理システムで、ソースコードの変更履歴を追跡・管理し、複数の開発者が同時に作業できる環境を提供します。2005年にLinux Torvalds氏によって開発され、現在最も広く使用されているバージョン管理システムです。

主要概念

基本要素

  • リポジトリ: プロジェクトの全履歴を保存する場所
  • コミット: 変更内容のスナップショット
  • ブランチ: 独立した開発ライン
  • マージ: 複数のブランチを統合する作業
  • ワーキングディレクトリ: 実際に作業を行う場所
  • ステージングエリア: コミット前の変更を準備する場所

分散型の特徴

  • ローカルリポジトリ: 各開発者のマシンに完全なコピー
  • リモートリポジトリ: 共有用の中央リポジトリ
  • オフライン作業: ネットワークなしでもバージョン管理が可能
  • 高い可用性: 単一障害点がない

基本的なGitコマンド

初期設定

# グローバル設定
git config --global user.name "野口真一"
git config --global user.email "shinichi@noguchi.jp.net"

# リポジトリの初期化
git init

# 既存リポジトリのクローン
git clone https://github.com/username/repository.git

基本的な操作

# ファイルの状態確認
git status

# 変更をステージングエリアに追加
git add ファイル名
git add .  # 全ての変更を追加

# コミットの作成
git commit -m "変更内容の説明"

# 変更履歴の確認
git log
git log --oneline  # 簡潔な表示

# ファイルの差分確認
git diff
git diff --staged  # ステージングエリアの差分

ブランチ操作

# ブランチの一覧表示
git branch

# 新しいブランチの作成
git branch feature/new-feature

# ブランチの切り替え
git checkout feature/new-feature

# ブランチの作成と切り替えを同時に
git checkout -b feature/new-feature

# ブランチのマージ
git checkout main
git merge feature/new-feature

# ブランチの削除
git branch -d feature/new-feature

リモートリポジトリ操作

# リモートリポジトリの追加
git remote add origin https://github.com/username/repository.git

# リモートリポジトリの確認
git remote -v

# リモートから最新情報を取得
git fetch

# リモートから取得してマージ
git pull origin main

# ローカルの変更をリモートに送信
git push origin main

# 初回プッシュ時のアップストリーム設定
git push -u origin main

Gitワークフロー

基本的な作業フロー

  1. 作業ディレクトリで編集: ファイルの変更・追加・削除
  2. ステージング: git addで変更をステージングエリアに追加
  3. コミット: git commitで変更をローカルリポジトリに保存
  4. プッシュ: git pushでリモートリポジトリに送信

Git Flow

  • main/master: 本番環境用の安定版ブランチ
  • develop: 開発用のメインブランチ
  • feature: 新機能開発用のブランチ
  • release: リリース準備用のブランチ
  • hotfix: 緊急修正用のブランチ

よく使用される高度な機能

履歴の修正

# 最新コミットの修正
git commit --amend

# 特定のコミットを取り消し
git revert コミットハッシュ

# 複数のコミットを修正(対話的リベース)
git rebase -i HEAD~3

# コミットの取り消し(注意:危険な操作)
git reset --hard HEAD~1

一時的な変更の保存

# 作業中の変更を一時保存
git stash

# 一時保存の一覧表示
git stash list

# 一時保存の変更を復元
git stash pop

# 一時保存の削除
git stash drop

メリット

  • 分散型: 各開発者が完全なコピーを持つため、障害に強い
  • 高速: ローカルでの操作が非常に高速
  • ブランチ機能: 軽量で高速なブランチ作成・切り替え
  • フレキシブル: 様々な開発ワークフローに対応
  • 統合性: データの整合性を保証するハッシュベースの管理

デメリット

  • 学習コスト: 概念が複雑で習得に時間がかかる
  • バイナリファイル: 大きなバイナリファイルの管理が苦手
  • 複雑な履歴: マージやブランチが複雑になりがち
  • コマンドライン: 基本的にはコマンドライン操作が必要

関連技術

  • GitHub: Gitリポジトリのホスティングサービス
  • GitLab: Git管理とCI/CDを統合したプラットフォーム
  • Bitbucket: Atlassian社のGitリポジトリサービス
  • Git LFS: 大きなファイルを効率的に管理する拡張
  • GitKraken: Git操作用のGUIツール

関連リンク

この用語についてもっと詳しく

Gitに関するご質問や、システム導入のご相談など、お気軽にお問い合わせください。