Skip to content
Latchkey

Gitとは?

Gitは、プロジェクトの完全な履歴を記録する分散型バージョン管理システムで、多くの人が互いを上書きすることなく同じcodebaseを変更できるようにします。

Gitは、ほぼすべての現代のソフトウェアプロジェクトを支えるツールです。ファイルへのあらゆる変更を追跡し、誰がなぜそれを行ったかを記憶し、作業の主流を乱すことなくアイデアを試すためにbranchできるようにします。分散型であるため、すべてのcloneが履歴の完全なコピーであり、それがGitをCI/CDにとって自然なsource of truthにしている理由でもあります。

Gitが実際に行うこと

Gitの中核は、commitするたびにプロジェクトのスナップショットを取ることです。diffを保存するのではなく、ツリー全体の状態を保存し、変更されていないファイルを再利用するため、履歴を素早くたどれます。すべてのスナップショットはコンテンツハッシュで識別されます。つまり履歴は改ざん検出可能です。過去のどこかを変えれば、それ以降のすべてのハッシュも変わるのです。

設計上分散されている

古い集中型システムとは異なり、Gitはすべての開発者にすべての履歴を含むリポジトリの完全なコピーを与えます。commit、branch、logの確認をすべてオフラインで行い、準備ができたらGitHubのような共有remoteを通じて他の人と同期できます。履歴そのものには単一障害点がありません。

コマンドを最初に見る

典型的な1日で触れるのはわずか数個のコマンドだけです。変更をstageし、メッセージを添えてcommitし、remoteにpushして、チームメイトとCIが見られるようにします。

The everyday Git loop
git add .
git commit -m "Add login form validation"
git push origin main

GitがどのようにCI/CDを支えるか

CI/CDシステムはGitリポジトリを監視し、変更に反応します。pushやpull requestはイベントです。CIサーバーは正確なcommitをチェックアウトし、それをbuildし、testを実行します。すべてのcommitが一意の識別子を持つため、pipelineの実行をそれがtestしたコードに正確に結びつけられます。これは再現可能なbuildと信頼性の高いdeploymentに不可欠です。

なぜチームはGitに頼るのか

  • 完全な履歴により、バグがいつなぜ現れたかを簡単に見つけられます。
  • branchingにより、競合なく並行して作業を進められます。
  • コンテンツハッシュは、すべてのbuildの信頼でき再現可能な記録を提供します。
  • remoteは、CIがbuildできる共有のsource of truthを提供します。

重要なポイント

  • Gitは、プロジェクトの履歴をスナップショットとして記録する分散型バージョン管理システムです。
  • すべてのcommitは一意のコンテンツハッシュを持ち、履歴を再現可能で改ざん検出可能なものにします。
  • CI/CD pipelineはGitからbuildし、pushやpull requestに反応します。

関連ガイド