違い: 1. SVN は集中型バージョン管理システムであるのに対し、Git は分散型バージョン管理システムです; 2. SVN はサイズが大きい元のファイルに従って保存されるのに対し、Git はサイズが大きい元のファイルに従って保存されます。メタデータ. 、サイズは非常に小さい; 3. Git のブランチ操作は他の開発者に影響を与えませんが、SVN は影響します。
このチュートリアルの動作環境: Windows 7 システム、Git バージョン 2.30.0、Dell G3 コンピューター。
SVN は Subversion の略で、オープンソースのバージョン管理システムです。 、ほとんどの一般的なオペレーティング システムをサポートします。オープンソースのバージョン管理システムとして、Subversion は時間の経過とともに変化するデータを管理します。このデータは中央リポジトリに配置されます。このアーカイブは通常のファイル サーバーとよく似ていますが、すべてのファイル変更を記憶します。このようにして、ファイルを古いバージョンに復元したり、ファイルの変更履歴を参照したりできます。 Subversion は、プログラム ソース コードを含むあらゆる種類のファイルの管理に使用できる汎用システムです。
集中管理のワークフローは次のとおりです。
集中コード管理の核心は次のとおりです。すべての開発者は、新しい日の作業を開始する前にサーバーからコードを取得し、開発し、最後に競合を解決してコミットする必要があります。すべてのバージョン情報はサーバー上に配置されます。サーバーから切断されている場合、基本的に開発者は作業できないと言えます。以下は例です:
新しい 1 日の作業を開始します:
プロジェクト チームの最新のコードをサーバーからダウンロードします。
自分のブランチに入り、作業し、1 時間ごとにサーバー上の自分のブランチにコードを送信します (多くの人がこの習慣を持っています。自分でコードを変更することがあるため)、最後に、前の 1 時間のバージョンに復元したい場合、または前の 1 時間に変更したコードを確認したい場合は、これを行う必要があります)。
もうすぐ非番時間が近づいています。ブランチをサーバーのメイン ブランチにマージしてください。その日の作業が完了し、サーバーに反映されます。
このアプローチは、特に昔ながらのローカル VCS と比較して、多くの利点をもたらします。今では、プロジェクト内の他のメンバーが何に取り組んでいるのかを誰もがある程度見ることができます。管理者は、各開発者の権限を簡単に制御することもできます。
すべてのものには良い面と悪い面の 2 つの側面があります。これを行うことの最も明白な欠点は、中央サーバーが単一障害点になることです。 1 時間ダウンした場合、この 1 時間は誰も更新、復元、比較などを送信できなくなり、共同作業することができなくなります。中央サーバーのディスクに障害が発生し、バックアップが作成されないか、バックアップのタイミングが十分でない場合、データが失われるリスクがあります。最悪のシナリオは、クライアントによって抽出された一部のスナップショット データを除いて、プロジェクト全体の変更履歴レコードがすべて完全に失われることですが、これは依然として問題であり、すべてのデータが抽出されたことを保証することはできません。
原則として、Subversion はファイルの内容の特定の違いのみを考慮します。毎回、どのファイルが更新されたか、どの行と内容が更新されたかが記録されます。
各リポジトリには固有の URL (公式アドレス) があり、各ユーザーはこのアドレスからコードとデータを取得します。
コード更新を取得するには、この固有のリポジトリに接続し、同期して最新のデータを取得することのみ可能です;
送信にはネットワーク接続が必要です (非ローカル リポジトリ) ;
送信には承認が必要です。書き込み権限がない場合、送信は失敗します。;
送信は毎回成功するとは限りません。他の誰かがあなたより先に提出すると、「変更は古いバージョンに基づいています。最初に更新してから提出してください」というプロンプトが表示されます...など;
競合の解決は競争です。送信速度の違い: 速い人は最初に送信しても何も起こりませんが、遅い場合は後で送信すると、面倒な競合解決が発生する可能性があります。
Git は、小規模または大規模なプロジェクトを機敏かつ効率的に処理するための、無料のオープンソース分散バージョン管理システムです。
Git はオープンソースの分散バージョン管理システムであり、小規模から非常に大規模なプロジェクトまでのバージョン管理を効果的かつ迅速に処理するために使用されます。 Git は、Linux カーネル開発の管理を支援するために Linus Torvalds によって開発されたオープン ソースのバージョン管理ソフトウェアです。#分散型と集中型の最大の違いは、開発者がローカルで送信できることと、各開発者が複製 (git clone) によって完全な Git リポジトリをローカル マシンにコピーすることです。
ワークフローの観点から見ると、git には次の機能があります。
メイン開発者 の観点から見ると (メイン開発者がコードを開発する必要がないと仮定して)、git には次の機能があります。
View 一般開発者の提出状況をメール等で確認します。
パッチを適用して競合を解決します (競合は自分で解決することも、再送信する前に開発者に解決を依頼することもできます。オープンソース プロジェクトの場合は、どのパッチを適用するかを決定する必要もあります)役に立つものとそうでないもの)。
結果を公開サーバーに送信し、すべての開発者に通知します。
2005 年の誕生以来、Git はますます成熟し、完璧になってきました。オリジナルのデザインで目標を設定しました。高速で大規模プロジェクトの管理に非常に適しており、さまざまな複雑なプロジェクト開発ニーズに対応できる驚くべき非線形ブランチ管理システムも備えています。
SVN とは異なり、Git はバージョン履歴を記録し、ファイル データ全体が変更されたかどうかのみを考慮します。 Git は、ファイル内容の変更に関する差分データを保存しません。実際、Git は、変更されたファイルのスナップショットを取得し、それらを小型のファイル システムに記録することに似ています。更新が送信されるたびに、すべてのファイルのフィンガープリント情報がスキャンされ、ファイルのスナップショットが作成され、そのスナップショットを指すインデックスが保存されます。パフォーマンスを向上させるために、ファイルが変更されていない場合、Git はファイルを再保存せず、最後に保存されたスナップショットへの接続のみを作成します。
SVN は集中バージョン管理システムです。不正確な比喩があります: SVN = バージョン管理バックアップ サーバー SVN使用するとアーカイブ倉庫に少し似ています。ファイルの並列読み取りと書き込みをサポートし、コードのバージョン管理をサポートします。その機能には、取得、インポート、更新、分岐、名前変更、復元、マージなどが含まれます。
Git は分散バージョン管理システムで、操作コマンドには clone、pull、push、branch、merge、push、rebase があり、プログラム コードのバージョン管理を得意としています。
GIT には、SVN と同様に、独自の集中リポジトリまたはサーバーがあります。ただし、GIT は分散モードで使用することを好みます。つまり、各開発者は、中央リポジトリ/サーバーからコードをチェックアウトした後、自分のマシン上に自分のリポジトリのクローンを作成します。
飛行機内、地下室、エレベーター内など、インターネットに接続できない場所に閉じ込められた場合でも、ファイルを送信したり、閲覧したりすることができると言えます。履歴バージョン レコードを作成し、プロジェクト ブランチを作成します。あまり役に立たないと思われる方もいるかもしれませんが、突然ネットワークのない環境に遭遇した場合、これで大きな問題が解決されます。
Git は非常に小さいメタデータの形式でファイルを保存しますが、SVN はサイズが大きい元のファイルの形式でファイルを保存します。
GIT はコンテンツをメタデータとして保存しますが、SVN はコンテンツをファイルとして保存します。すべてのリソース制御システムは、ファイルのメタ情報を .svn、.cvs などのフォルダーに隠します。
.git ディレクトリのサイズと .svn のサイズを比較すると、両者の間には大きな差があることがわかります。 .git ディレクトリはマシン上のリポジトリのクローン バージョンであるため、タグ、ブランチ、バージョン レコードなど、中央リポジトリ上のすべてのものが含まれています。
ブランチは SVN では特別なものではなく、リポジトリ内の単なる別のディレクトリです。ブランチがマージされているかどうかを知りたい場合は、 svn propget svn:mergeinfo のようなコマンドを手動で実行して、コードがマージされているかどうかを確認する必要があります。
しかし、GIT ブランチの操作は非常にシンプルで楽しいものです。同じ作業ディレクトリから複数のブランチ間をすばやく切り替えることができます。マージされていないブランチを簡単に見つけることができ、これらのファイルを迅速かつ簡単にマージできます。
GIT にはグローバル バージョン番号がありませんが、SVN にはあります。これが、SVN と比較して GIT に欠けている最大の機能です。また、SVN バージョン番号は実際には、対応する時点のソース コードのスナップショットであることもわかります。これは CVS から SVN への進化における最大のブレークスルーだと思います。 GIT と SVN は概念的に異なるため、GIT のどの機能がそれらに対応するのかわかりません。手がかりがある場合は、コメントで共有してください。
GIT のコンテンツの整合性は SVN より優れています。GIT のコンテンツ ストレージは SHA-1 ハッシュ アルゴリズムを使用します。これにより、コード コンテンツの整合性が確保され、ディスク障害やネットワークの問題が発生した場合のリポジトリへの中断が軽減されます。
ブランチ操作の影響
Git のブランチ操作は他の開発者には影響しませんが、SVN は影響します。新しいブランチを作成すると、全員が同じ情報を得ることができます。あなたも同じ支店です。
SVN は中国語のサポートが充実しており、操作が簡単です使い方に難しいことはなく、アーティスト、製品担当者、テスター、実装担当者が簡単に始めることができます。ユーザーインターフェースが統一されており、機能が充実しており、操作が便利です。
プログラムのソース コードに対して差別化されたバージョン管理を実行し、コード ベースが占めるスペースはほとんどありません。支店コード管理が容易。中国語はサポートされておらず、グラフィカル インターフェイスのサポートも貧弱で、使いにくいです。宣伝するのは簡単ではありません。
適用できるオブジェクトが異なります。 Git は、オープンソース プロジェクトに携わる開発者に適しています。彼らは高度な専門知識を持っているため、使いやすさよりも効率を重視しています。 SVN は異なり、一般的な企業の開発チームに適しています。使いやすくなりました。
として 128 ビット ID を使用し、チェックアウト時にそれがどのブランチであるかを示す必要がありますが、SVN は増分するシリアル番号を使用します。世界的にユニークなバージョン番号を、より簡潔で理解しやすくしました。 gittag を使用してリテラルのエイリアスを作成することはできますが、結局のところ、それは特別なバージョンにのみ適用されます。
R&D チームのメンバーには、通常、要件分析、設計、アーティスト、プログラマー、テスト、実装、運用および保守が含まれます。各メンバーは、ドキュメント、設計コード、プログラム コードなどの作業の成果物を持っています。これらは、次のとおりである必要があります。プロジェクトごとに一元管理されます。 SVN はディレクトリごとに明確に分類して管理できるため、プロジェクト チームの管理が秩序正しく効率的な状態に保たれます。
推奨学習:「Git チュートリアル 」
以上がgit と svn の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。