Git は、バージョン管理の世界的な標準となっています。 では、正確には何でしょうか。
Git は分散バージョン管理システムです。つまり、プロジェクトのローカル 複製は完全なバージョン管理リポジトリです。 これらの完全に機能するローカル リポジトリを使用すると、オフラインまたはリモートで簡単に作業できます。 開発者はローカルで作業をコミットし、リポジトリのコピーをサーバー上のコピーと同期します。 このパラダイムは、新しいバージョンのコードを作成する前にクライアントがコードをサーバーと同期する必要がある、一元的なバージョン管理とは異なります。
Git の柔軟性と人気により、どのチームにも最適な選択肢となります。 多くの開発者や大学の卒業生は、Git の使用方法を既に知っています。 Git のユーザー コミュニティでは、開発者をトレーニングするためのリソースが作成されており、Git の人気によって、必要なときに簡単に支援を得ることができます。 ほぼすべての開発環境で、すべての主要なオペレーティング システムに Git サポートと Git コマンド ライン ツールが実装されています。
Git の基礎
作業が保存されるたびに、Git によってコミットが作成されます。 コミットは、ある時点のすべてのファイルのスナップショットです。 あるコミットから次のコミットにファイルが変更されていない場合、Git は以前に保存したファイルを使用します。 この設計は、ファイルの初期バージョンを格納し、時間の経過と同時に差分の記録を保持する他のシステムとは異なります。
コミットにより、他のコミットへのリンクが作成され、開発履歴のグラフが形成されます。 コードを以前のコミットに戻し、あるコミットから次のコミットにファイルがどのように変更されたかを調べ、変更が行われた場所やタイミングなどの情報を確認できます。 コミットは、コミットの内容の一意の暗号化ハッシュによって Git で識別されます。 すべてがハッシュされているため、Git がファイルを検出せずに、変更を加えたり、情報を失ったり、ファイルを破損させたりすることは不可能です。
支店
各開発者は、独自のローカル コード リポジトリに変更を保存します。 その結果、同じコミットに基づいてさまざまな変更が発生する可能性があります。 Git には、変更を分離し、後でそれらをマージするツールが用意されています。 ブランチは、作業中の進捗を指す軽量ポインターであり、この分離を管理します。 ブランチで作成された作業が完了したら、チームのメイン (またはトランク) ブランチにマージして戻すことができます。
ファイルとコミット
Git のファイルは、変更、ステージング、またはコミットの 3 つの状態のいずれかになります。 ファイルが最初に変更されたとき、変更は作業ディレクトリにのみ存在します。 まだコミットや開発履歴の一部ではありません。 開発者は、変更されたファイルをコミットに含めるために ステージング する必要があります。 ステージング領域には、次のコミットに含めるすべての変更が含まれます。 開発者がステージングされたファイルに満足すると、ファイルは コミット としてパッケージ化され、変更内容を説明するメッセージが表示されます。 このコミットは、開発履歴の一部になります。
ステージングを使用すると、開発者は、大きな変更を一連の小さなコミットに分割するために、コミットに保存するファイルの変更を選択できます。 コミットのスコープを減らすことで、コミット履歴を確認して特定のファイルの変更を見つけるのが簡単になります。
Git の利点
Git の利点は多数あります。
同時開発
すべてのユーザーが独自のコードのローカル コピーを持っており、自分のブランチで同時に作業できます。 ほぼすべての操作がローカルであるため、Git はオフラインで動作します。
リリースの高速化
ブランチを使用すると、柔軟で同時に開発できます。 メイン ブランチには、製品をリリースするための安定した高品質のコードが含まれています。 機能ブランチには進行中の作業が含まれ、完了時にメイン ブランチにマージされます。 リリース ブランチを開発中の開発から分離することで、安定したコードを管理し、更新プログラムをより迅速に出荷する方が簡単になります。
組み込みの統合
その人気のため、Git はほとんどのツールと製品に統合されています。 すべての主要な IDE には Git サポートが組み込まれており、多くのツールで継続的インテグレーション、継続的デプロイ、自動テスト、作業項目の追跡、メトリック、Git とのレポート機能の統合がサポートされています。 この統合により、日常のワークフローが簡略化されます。
強力なコミュニティ サポート
Git はオープンソースであり、バージョン管理の事実上の標準となっています。 チームが利用できるツールやリソースは不足しません。 Git に対するコミュニティ サポートの量は、他のバージョン管理システムと比較して、必要なときに簡単に支援を得ることができます。
Git は任意のチームと連携します
Git をソース コード管理ツールと共に使用すると、コラボレーションの促進、ポリシーの適用、プロセスの自動化、作業の可視性と追跡可能性の向上によって、チームの生産性が向上します。 チームは、バージョン管理、作業項目の追跡、継続的インテグレーションとデプロイのための個々のツールに取り組むことができます。 または、これらのタスクをすべて 1 か所でサポートする GitHub や Azure DevOps などのソリューションを選択することもできます。
Pull Request
pull requests を使用して、メイン ブランチにマージする前に、コードの変更についてチームと話し合います。 pull request のディスカッションは、コードの品質を確保し、チーム全体の知識を向上させるために非常に重要です。 GitHub や Azure DevOps などのプラットフォームでは、開発者がファイルの変更を参照したり、コメントを残したり、コミットを検査したり、ビルドを表示したり、コードを承認するための投票を行うことができる、豊富なプル要求エクスペリエンスが提供されます。
ブランチ ポリシー
Teams では、チーム全体で一貫したワークフローとプロセスを適用するように GitHub と Azure DevOps を構成できます。 プルリクエストが完了する前に要件を満たしていることを確認するため、ブランチポリシーを設定できます。 ブランチ ポリシーは、直接プッシュを防ぎ、レビュー担当者を要求し、クリーン なビルドを確保することで、重要なブランチを保護します。