|
[51CTO.com クイック翻訳] ソフトウェア開発の世界には、「高度なレベルに進む前に、まず使用しているソフトウェアツールの技術用語とコマンドを理解し、習得する」という格言があります。同様に、Gitのワークフローと主要な概念を理解することで、Gitのバージョン管理システムを日常的に使用する際に、より効率的なコード管理を実現できます。 Git とは何でしょうか? 他のバージョン管理システム (VCS) と同様に、Git を使用して同じデータ情報 (またはファイル タイプ) の異なるバージョンを追跡できます。 しかし、Gitが他のVCSと異なる点は、主にその分散性、つまり分散バージョン管理システム(DVCS)にあります。この環境では、各開発者のホストが「ノード」または「ハブ」として機能します。 データの整合性を維持するために、Gitはファイルシステムへのすべての変更を新しく生成されたデータとして扱います。そのため、Gitの基本フレームワークは複数のブランチで構成され、ユーザーの初期プロジェクトは「メイン」ブランチに配置されます。このアプローチは、効率的な機能開発を促進するだけでなく、バグ修正やコードレビューを容易にします。さらに、頻繁な同期により、ピアノード間のマージなどの継続的な操作が可能になります。 GitはLinus Torvaldsによって開発され、その根底にある哲学は主に速度に重点を置いています。Gitの主な特徴は、ブランチとマージの容易さ、データの整合性、そして大規模なコラボレーションの3つです。Gitはユーザーのプロジェクトの履歴全体をローカルに保存し、ユーザーが古いバージョンのデータに迅速にアクセスできるようにします。 Git ワークフロー: Git ファイルの 3 つの状態 よく知られているように、多くのVCSはリポジトリと作業コピーという2層アーキテクチャを採用しています。しかし、Gitは作業ディレクトリ、ステージング領域、ローカルリポジトリという3層アーキテクチャを採用しています。そのため、同じコードに対して、Gitはこれらの3層を通して、異なる時間間隔とバージョンで現在の作業を保存する方法を提供しています。 同時に、Git は 3 つのフェーズを利用して、各レベルで同じコード (またはオブジェクト) の異なる (または同じ) 状態を保存します。 初期化 (またはクローン作成) フェーズでは、Git プロジェクトはローカル コンピューター上に「作業ディレクトリ」を作成し、ユーザーがソース コードの編集を開始できるようにします。 ソースコード開発の初期段階では、ファイルやディレクトリを自由に変更でき、好みのエディタを使って追加、削除、移動、名前変更、コピーできます。もちろん、私は最も効率的で最大のテキストエディタであるVim(https://www.vim.org/ 参照)を使うことを好みます。 編集が完了したら、「Git add」コマンドを使用して変更をステージングできます。これは、ステージング領域にインデックスを付け、次にコミットする内容のプレビューを表示することを意味します。 次に、*** グループのコードがステージング領域にステージングされたら、作業ディレクトリでさらに編集を行うことができます。作業ディレクトリとステージング領域には、それぞれ現在のプロジェクトの異なるスナップショット(またはバージョン)が含まれます。 上記の 2 つのフェーズを同期するには、Git add を使用して変更を作業ディレクトリに一時的に保存するだけです。 コード変更を追加するだけでなく、インデックス内のステージングされた変更を元に戻す場合は、別の Git コマンドを実行する必要があります。 この段階で変更を加える必要がない場合は、「Git コミット」を使用してコードをローカルの Git リポジトリに移動して保存できます。 つまり、コミット コマンドは、プロジェクトが上記の 3 つのフェーズすべてで同じスナップショットを持つことを保証し、Git の 3 つのフェーズが相互に同期された状態を維持します。 さらに、「Git status」コマンドを使用すると、現在の作業ツリーのステータスとファイルのステージを表示できます。 主要なGit用語とコマンド これまでにCVS(Concurrent Version Control System、http://savannah.nongnu.org/projects/cvs)、SVN(Apache Subversion、https://subversion.apache.org/)、ClearCase(https://www.ibm.com/us-en/marketplace/rational-clearcase)、BitKeeper(http://www.bitkeeper.org/)といった人気のVCSを使ったことがあるかもしれません。GitもVCSですが、独自のファイルシステムアーキテクチャを使用してソースコードを処理します。そのため、以前の様々なVCSと比較して、Gitには独自の用語とコマンドラインメソッドがあります。 リポジトリ プロジェクト全体のスナップショットをコンピュータ上のローカルディレクトリに保存することで、あらゆる細かな変更も保存・取得できます。ユーザーはリポジトリのログを簡単に表示・取得できます。つまり、コードの任意の過去の状態にジャンプできるのです。 作業ディレクトリ プロジェクトのコアコードの作業コピーを提供します。 インデックス(スクラッチパッド、キャッシュ) ステージングエリアは、ユーザーの次のコミットのスナップショットと捉えることができます。Git add を使用して作業ディレクトリにコードをステージングまたは追加すると、コードはここに移動されます。メモリ内のキャッシュのように、ステージングエリアは作業ディレクトリ(コードが開発される場所)とローカルリポジトリ(コードが保存される場所)の間の中間層として機能します。この層では、コミットしようとしているプロジェクトのスナップショットを素早くプレビューできます。もちろん、ステージングエリアでコードを編集(追加、変更、削除)することは可能です。さらに、プロジェクトの以前のバージョン(または状態)を復元することもできます。 提出する コミットとは、プロジェクトのスナップショット(状態)です。下の図に示すように、各コミットには一意のコミットIDが割り当てられます。さらに、すべてのコミットログはローカルリポジトリに保存されます。 Git オブジェクトとして、コミットにはコミット ID、作成者名、作成日、コミット メッセージ (タイトルと本文) などのさまざまな属性が保存されます。 git ハッシュ(または SHA-1) 上で述べた一意の「コミットID」は、一般的に「gitハッシュ」または「SHA-1」と呼ばれます(https://en.wikipedia.org/wiki/SHA-1 参照)。通常、ファイルシステムへのすべての変更(追加、削除、編集、移動、コピー、名前変更、ファイル権限など)はファイルとして扱われます。そして、その内容は一意のSHA-1コードに変換されます。上の画像に示されているコミットIDは「8db083e7df7c9241e640b66c89c6f02649ac885a」です。実際には、最初の7桁の一意の数字、つまり「8db083e」が通常使用されます。 もちろん、ハッシュID全体を覚えておく必要はありません(これについては後述します)。Gitは、ブランチやタグなどの参照を使用して、これらのコミットID(ハッシュ)を処理します。 支店 ブランチとは、独立した開発の「並行ライン」です。ブランチを使用すると、同じコードを独立したワークスペースで作業できます。各ブランチにはプロジェクト履歴のコピーが個別に保存されるため、独自のブランチで開発を行い、あるブランチから別のブランチにコードを簡単にマージできます。 本枝 プロジェクトが Git プロジェクトとして作成されると、マスター ブランチがその主なローカル デフォルト ブランチになります。 頭 HEAD は各ブランチの最後のコミットのスナップショットです。各ブランチにはコミットIDがあり、前述のように、これは短縮SHA-1名またはポインタ参照です。HEAD は常にブランチの最後のコミット(コード)を指し示し、コミットごとに自動的に最後のコミットIDを指すように移動します。 さらに、ブランチが最新のコミットではなく古いコミットを指している場合、「分離された HEAD」という概念が発生します。 ご覧のとおり、コミット ID「HEAD」への参照を取得したら、最近作業したコミット ID を覚えておく必要がなくなります。 チェックアウト このコマンドは指定されたブランチに切り替え、現在のプロジェクトのステータスを表示します。また、以前に作業したツリーファイルを復元することもできます。 クローン クローンとは、リモートリポジトリの作業コピーです。「git clone」コマンドは、リモートリポジトリをダウンロードし、ローカルコンピュータ上に作業ディレクトリを作成します。 さらに、このコマンドは、ローカル リポジトリからリモート リポジトリへのさまざまなリモート ハンドラーまたはポインター参照を保存することもできます。 上の画像は、URL: https://github.com/divyabhushan/learn_branching.git を使用して「origin」というリモート リポジトリを追跡する「learn_branching」というローカル リポジトリを示しています。 結論は 上記の基本概念が、Gitの様々な効果的な使い方をより深く理解するのに役立つことを願っています。もちろん、Gitには他にも多くの概念と実用的なコマンドが含まれています。「git help -a」と入力するとコマンドの完全なリストが表示され、「git help...」と入力すると完全なリストにアクセスできます。 原題: Git: 基本用語とコマンドの説明、著者: Divya Bhushan [この記事は51CTOによって翻訳されました。提携サイトへの転載の際は、元の翻訳者と出典を51CTO.comとして明記してください。] |