Git とは

Git はバージョン管理の世界標準となっています。 では、それは一体何なのでしょうか?

Git は分散バージョン管理システムであり、プロジェクトのローカル クローンが完全なバージョン管理リポジトリであることを意味します。 この完全に機能的なローカル リポジトリによって、オフラインまたはリモートで作業するのが容易になります。 開発者は作業をローカルにコミットし、リポジトリのコピーをサーバー上のコピーと同期します。 このパラダイムは、コードの新しいバージョンを作成する前にクライアントがコードをサーバーと同期する必要のある集中型バージョン コントロールとは異なります。

Git は柔軟性と人気があるため、どのチームにとっても優れた選択肢となっています。 多くの開発者や大学卒業生は、すでに Git の使用方法を知っています。 Git のユーザー コミュニティは開発者をトレーニングするためのリソースを作成しており、Git の人気により、必要なときに簡単にサポートを受けることができます。 ほぼすべての開発環境には、主要なオペレーティング システムごとに Git サポートと Git コマンド ライン ツールが実装されています。

Git の基礎

作業内容が保存されるたびに、Git はコミットを作成します。 コミットは、ある時点でのすべてのファイルのスナップショットです。 ファイルがコミット間で変更されていない場合、Git は以前に保存されたファイルを使用します。 この設計は、ファイルの初期バージョンを保存し、長期にわたるデルタの記録を保持する他のシステムとは異なります。

Linear graph of development in Git

コミットは他のコミットへのリンクを作成し、開発履歴のグラフを形成します。 コードを前のコミットに戻したり、あるコミットから次のコミットにファイルがどのように変更されたかを検査したり、変更がいつどこで行われたかなどの情報を確認したりすることができます。 Git では、コミットはコミットの内容の一意の暗号化ハッシュによって識別されます。 すべてがハッシュされるため、Git が検出せずに変更を加えたり、情報を失ったり、ファイルを破損したりすることは不可能です。

ブランチ

各開発者は、変更を自分のローカル コード リポジトリに保存します。 その結果、同じコミットに基づいて多くの異なる変更が行われる可能性があります。 Git には、変更を分離し、それらを後でまとめてマージするツールが備えられています。 ブランチは進行中の作業への軽量のポインタであり、この分離を管理します。 ブランチの作業が完了すると、チームのメイン (またはトランク) ブランチにマージされます。

Commits on a branch

ファイルとコミット

Git 内のファイルは、変更済み、ステージング済み、コミット済みの 3 つの状態のいずれかになります。 ファイルが最初に変更されたとき、変更は作業ディレクトリにのみ存在します。 これらはまだコミットや開発履歴の一部ではありません。 開発者は、変更されたファイルをコミットに含めるステージングを行う必要があります。 ステージング領域には、次のコミットに含めるすべての変更が含まれます。 開発者がステージングされたファイルに満足したら、ファイルは変更内容を説明するメッセージとともにコミットとしてパッケージ化されます。 このコミットは開発履歴の一部になります。

file_status_lifecycle-2

ステージングを使用すると、開発者は、大きな変更を一連の小さなコミットに分割するために、コミットに保存するファイルの変更を選択できます。 コミットの範囲を減らすことで、コミット履歴を確認して特定のファイルの変更を見つけることが容易になります。

Git の利点

Git の利点は数多くあります。

同時開発

誰もが独自のコードのローカル コピーを持っており、自分のブランチで同時に作業できます。 Git は、ほぼすべての操作がローカルで行われるため、オフラインでも機能します。

リリースの高速化

ブランチにより、柔軟な同時開発が可能になります。 メイン ブランチには安定した高品質のコードが含まれており、そこからリリースします。 機能ブランチには進行中の作業が含まれており、完了するとメイン ブランチにマージされます。 リリース ブランチを進行中の開発から分離することで、安定したコードの管理が容易になり、アップデートをより迅速に配布できるようになります。

組み込みの統合

その人気により、Git はほとんどのツールや製品に統合されています。 すべての主要な IDE には Git サポートが組み込まれており、多くのツールが継続的インテグレーション、継続的デプロイメント、自動テスト、作業項目追跡、メトリクス、レポート機能の Git との統合をサポートしています。 この統合により、日常のワークフローが簡素化されます。

強力なコミュニティサポート

Git はオープンソースであり、バージョン管理の事実上の標準となっています。 チームが活用できるツールやリソースは不足することはありません。 他のバージョン管理システムと比較して、Git はコミュニティ サポートが充実しているため、必要なときに簡単にサポートを受けることができます。

Git はどのチームでも機能します

Git はどのチームでも機能します チームは、バージョン管理、作業項目の追跡、継続的な統合と展開のための個別のツールを使用することができます。 あるいは、これらすべてのタスクを 1 か所でサポートする GitHubAzure DevOps などのソリューションを選択することもできます。

プルリクエスト

コードの変更をメイン ブランチにマージする前に、プル リクエスト を使用してチームとコードの変更について話し合います。 プル リクエストでのディスカッションは、コードの品質を確保し、チーム全体の知識を増やすのに非常に貴重です。 GitHub や Azure DevOps などのプラットフォームは、開発者がファイルの変更を参照し、コメントを残し、コミットを検査し、ビルドを表示し、コードの承認に投票できる豊富なプル リクエスト エクスペリエンスを提供します。

ブランチ ポリシー

チームは GitHub と Azure DevOps を構成して、チーム全体で一貫したワークフローとプロセスを適用できます。 ブランチ ポリシー を設定して、プル リクエストが完了前に要件を満たしていることを確認できます。 ブランチ ポリシーは、直接プッシュを防止し、レビュー担当者を要求し、クリーン ビルドを保証することで重要なブランチを保護します。

次のステップ

Git のインストールと設定