DUICUO

インタビュアー: Git についての理解について教えてください。

[[416119]]

この記事は、WeChat公式アカウント「JS日语問」(著者:慧慧)からの転載です。転載の許可については、「JS日语問」公式アカウントまでお問い合わせください。

I. それは何ですか?

Git は、もともと Linux カーネル開発をより適切に管理するために設計された分散バージョン管理ソフトウェアです。

分散型バージョン管理システムのクライアントは、最新バージョンのファイルのスナップショットを取得するだけでなく、コードリポジトリ全体をミラーリングします。つまり、共同作業に使用しているサーバーのいずれかに障害が発生した場合でも、ミラーリングされたローカルリポジトリのいずれかを使用してシステムを復元できます。

プロジェクト開始時には、オリジナルのリポジトリは1つしかありませんでした。他のマシンはこのオリジナルのリポジトリをクローンできるため、クローンされたすべてのマシンは同じリポジトリを持つことになります。プライマリリポジトリやセカンダリリポジトリは存在しませんでした。

したがって、チームコラボレーションを実装する場合、1 台のコンピューターがサーバーとして機能している限り、他のすべてのユーザーは、この「サーバー」リポジトリのコピーを自分のコンピューターに複製し、自分のコミットをサーバー リポジトリにプッシュし、他のユーザーのコミットをサーバー リポジトリからプルします。

GitHub は基本的にこのサーバーとして機能します。Git リポジトリ ホスティング サービスを提供するオープンソースの共同コミュニティであり、他のユーザーが自分のオープンソース プロジェクトに参加したり、他のユーザーのオープンソース プロジェクトに参加したりできるようにします。

II. 動作原理

`git init` または `git clone` を使用してプロジェクトを作成すると、プロジェクトディレクトリ内に隠しサブディレクトリ `.git` が作成されます。これは、バージョン管理リポジトリの追跡と管理を目的としています。

Gitでは、すべてのデータは保存前にチェックサム計算され、その後、そのチェックサムを使って参照されます。そのため、ファイルを変更または削除すると、Gitはこのチェックサムを検出できます。

Git がチェックサムを計算するために使用するメカニズムは SHA-1 ハッシュと呼ばれ、次のように Git 内のファイルの内容またはディレクトリ構造に基づいて計算される 40 個の 16 進文字 (0 ~ 9 および a ~ f) の文字列です。

  1. 24b9da6552252987aa493b52f8696cd6d3b00373

ファイルを変更すると、Git はファイルのステータスを更新します。これは `git status` で確認できます。ステータスは次のようになります。

  • 変更済み: ファイルは変更されているが、まだデータベースに保存されていないことを示します。
  • ステージング済み: これは、変更されたファイルが次のコミットのスナップショットに含まれるものとしてマークされていることを示します。
  • コミット済み: データがローカル データベースに安全に保存されたことを示します。

ファイルの状態は Git のさまざまな作業領域に対応しており、主に次の 4 つの部分に分かれています。

  • 作業ディレクトリ:これは、コードを記述するローカル領域に相当します。例えば、git clone コマンドでプロジェクトをローカルマシンにクローンすることは、リモートリポジトリのプロジェクトのコピーをローカルにクローンすることと同じです。
  • ステージング領域: ステージング領域は、次にコミットするファイルのリストを保存するファイルで、通常は Git リポジトリ ディレクトリにあります。
  • ローカル リポジトリ: 更新をコミットし、ステージング領域でファイルを検索し、スナップショットを Git ローカル リポジトリに永続的に保存します。
  • リモート リポジトリ: GitHub などのリモート リポジトリ。

III. コマンド

上の画像に示すように、Git の簡単な日常的な使用には、画像に示されている 6 つのコマンドだけが使用されます。

  • 追加
  • 専念
  • 押す
  • 引く
  • クローン
  • チェックアウト

しかし、実際にはもっと多くのコマンドがあります。使いこなすには60以上のコマンドが必要です。これらのコマンドを組み合わせることで、個人の作業効率とチームのコラボレーション能力を向上させることができます。

参考文献

https://zh.wikipedia.org/wiki/Git

https://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html