== 分散型バージョン管理システム

=== GitとGitHub

== Gitの仕組み

=== ワーキングディレクトリ

ワーキングディレクトリは、Gitリポジトリ内のファイルやディレクトリが実際に存在する場所である。
開発者は、このディレクトリ内でファイルを作成、編集、削除する。
ワーキングディレクトリ内の変更は、Gitがトラッキングし、コミットする前にステージングに追加する必要がある。

=== ステージング

ステージングは、ワーキングディレクトリからGitリポジトリに変更を追加するプロセスである。
開発者は、変更したファイルをステージングに追加し、次にコミットするための準備を整える。
これにより、コミットする変更を選択的に管理し、変更の内容やコミットの粒度を制御することができる。

=== リポジトリ

リポジトリは、Gitがバージョン管理されたファイルや履歴を保存するデータベースである。
プロジェクトの全ての変更履歴やメタデータが保存され、複数のブランチやコミットからなる完全な履歴が管理される。
ローカルリポジトリとリモートリポジトリの2つのタイプがあり、開発者はローカルで作業を行い、変更をリモートリポジトリにプッシュして共有する。

=== コミット

コミットは、Gitリポジトリに変更を永続化する操作である。
開発者は、ワーキングディレクトリ内で変更を行った後、変更をステージングしてコミットする。
変更内容の説明や作成者の情報などのメタデータが含まれ、プロジェクトの変更履歴に新しいスナップショットを追加し、過去の状態に戻るための参照ポイントを提供する。

=== プッシュ

プッシュは、ローカルリポジトリの変更をリモートリポジトリに送信する操作である。
開発者は、ローカルで行ったコミットをリモートに反映させるためにプッシュする。
これにより、チームメンバー間でのコードの共有や同期が可能になります。

=== プル

プルは、リモートリポジトリからローカルリポジトリに変更を取得する操作である。
開発者は、リモートで行われた変更をローカルに反映させるためにプルを実行する。
これにより、他のチームメンバーの変更を取得し、自分の作業と統合することができる。

=== ブランチ

ブランチは、プロジェクトの異なるバージョンや機能ごとに分岐するための機能である。
開発者は、新しいブランチを作成し、独立した作業を行うことができる。
これにより、複数の作業を同時に進行し、コードの変更を安全に管理することが可能になる。