ホームページ  >  記事  >  開発ツール  >  gitとsvnの実装原理は同じですか?

gitとsvnの実装原理は同じですか?

WBOY
WBOYオリジナル
2022-01-07 11:04:022980ブラウズ

git と svn の実装原則は異なります。git は分散バージョン管理システムですが、svn は異なります。これが、git と svn の非分散バージョン管理システムの中心的な違いです。メタデータ モードで保存されます。 , svn はファイル モードで保存されます。

gitとsvnの実装原理は同じですか?

この記事の動作環境: Windows 10 システム、Git バージョン 2.30.0、Dell G3 コンピューター。

git と svn の実装原則は同じですか?

Git は、あらゆる問題を迅速に処理するために使用されるオープンソースの分散バージョン管理システムです。規模の大小を問わずプロジェクトを実行できます。

Git は、Linux カーネル開発の管理を支援するために Linus Torvalds によって開発されたオープン ソースのバージョン管理ソフトウェアです。

Git は、CVS や Subversion などの一般的に使用されるバージョン管理ツールとは異なり、分散バージョン ライブラリを使用し、サーバー側のソフトウェア サポートを必要としません。

1. Git と SVN

GIT はバージョン管理システムであるだけでなく、コンテンツ管理システム (CMS)、作業管理システム、等

あなたが SVN の使用経験がある場合、GIT が提供するいくつかの概念と機能に適応するために、特定のイデオロギー的な変更を加える必要があります。

Git と SVN の違い:

  • 1. GIT は分散型ですが、SVN は分散型ではありません: これは GIT と、SVN などの他の非分散型バージョン管理システムです。 CVS などの主な違い。

  • 2. GIT はコンテンツをメタデータとして保存しますが、SVN はコンテンツをファイルとして保存します。すべてのリソース制御システムは、ファイルのメタ情報を .svn、.cvs などのフォルダーに似たファイルに隠します。

  • 3. GIT ブランチは SVN ブランチとは異なります: ブランチは SVN ではまったく特別ではなく、リポジトリ内の単なる別のディレクトリです。

  • 4. GIT にはグローバル バージョン番号がありませんが、SVN にはあります。これは、これまでのところ、SVN と比較して GIT に欠けている最大の機能です。

  • 5. GIT のコンテンツの整合性は SVN よりも優れています: GIT のコンテンツ ストレージは SHA-1 ハッシュ アルゴリズムを使用します。これにより、コード コンテンツの整合性が確保され、ディスク障害やネットワークの問題が発生した場合のリポジトリへの中断が軽減されます。

2. Git の原則: Git ワークスペース、一時ストレージ領域、バージョン ライブラリ

基本概念

まずは理解しましょうGit ワークスペース、ステージング領域、リポジトリの概念

ワークスペース: コンピューター上で確認できるディレクトリです。

一時記憶領域:英語ではステージ、インデックスと呼ばれます。一般的には「.gitディレクトリ」配下のインデックスファイル(.git/index)に保存されるため、一時保存領域のことをインデックス(インデックス)と呼ぶこともあります。

リポジトリ: ワークスペースに隠しディレクトリ .git があります。これはワークスペースではなく、Git リポジトリです。

次の図は、作業領域、リポジトリ内のステージング領域、およびリポジトリの関係を示しています。

gitとsvnの実装原理は同じですか?

図の左側は、作業領域。右側にバージョン ライブラリがあります。リポジトリ内の「インデックス」とマークされた領域はステージング領域 (ステージ、インデックス) であり、「マスター」とマークされた領域はマスター ブランチで表されるディレクトリ ツリーです。

この図から、「HEAD」が実際には master ブランチを指す「カーソル」であることがわかります。したがって、図に示すコマンド内で HEAD が出現する箇所は、master に置き換えることができます。

図のオブジェクトで示されている領域は Git オブジェクト ライブラリで、実際には「.git/objects」ディレクトリにあり、作成されたさまざまなオブジェクトやコンテンツが含まれています。

ワークスペースで変更(または追加)されたファイルに対して「git add」コマンドを実行すると、一時記憶領域のディレクトリツリーが更新され、ファイルの内容が変更(または追加)されます。ワークスペースはオブジェクト ライブラリ内の新しいオブジェクトに書き込まれ、オブジェクトの ID は一時記憶領域のファイル インデックスに記録されます。

コミット操作 (git commit) を実行すると、一時記憶領域のディレクトリ ツリーがバージョン ライブラリ (オブジェクト ライブラリ) に書き込まれ、それに応じて master ブランチが更新されます。つまり、master が指すディレクトリツリーは、サブミット時の一時記憶領域のディレクトリツリーになります。

"git replace HEAD" コマンドを実行すると、ステージング領域のディレクトリ ツリーが書き換えられ、master ブランチが指すディレクトリ ツリーに置き換えられますが、ワークスペースには影響しません。

「git rm --cached 」コマンドを実行すると、ファイルは一時保存領域から直接削除され、ワー​​クスペースは変更されません。

「git checkout .」または「git checkout -- 」コマンドを実行すると、ワークスペース内のファイルが一時記憶領域内のすべてまたは指定されたファイルに置き換えられます。この操作は危険であり、ステージング領域に追加されていないワークスペース内の変更が消去されます。

「git checkout HEAD .」または「git checkout HEAD 」コマンドが実行されると、HEAD が指すマスター ブランチ内のファイルのすべてまたは一部がステージング領域を置き換えるために使用されます。およびワークスペース.ドキュメント。このコマンドは、ワークスペース内のコミットされていない変更をクリアするだけでなく、ステージング領域内のコミットされていない変更もクリアするため、非常に危険です。

推奨学習: 「Git チュートリアル

以上がgitとsvnの実装原理は同じですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。