ホームページ  >  記事  >  開発ツール  >  gitとsvnとは何ですか

gitとsvnとは何ですか

青灯夜游
青灯夜游オリジナル
2021-11-30 14:09:445853ブラウズ

Git はオープンソースの分散バージョン管理システムであり、小規模から非常に大規模なプロジェクトまでのバージョン管理を効果的かつ迅速に処理するために使用されます。 svn は、複数の人が同じプロジェクトを共同開発し、共有リソースを実現し、最終的には集中管理を実現するために使用されるオープンソースの集中バージョン管理システムです。

gitとsvnとは何ですか

このチュートリアルの動作環境: Windows 7 システム、Git バージョン 2.30.0、Dell G3 コンピューター。

git とは

Git は、あらゆるタスクまたは小規模なタスクを機敏かつ効率的に処理するための、無料のオープンソース分散バージョン管理システムです。大規模プロジェクト

Git はオープンソースの分散バージョン管理システムであり、小規模から非常に大規模なプロジェクトまでのプロジェクトのバージョン管理を効果的かつ迅速に処理するために使用されます。 Git は、Linux カーネル開発の管理を支援するために Linus Torvalds によって開発されたオープン ソースのバージョン管理ソフトウェアです。

分散型と集中型の最大の違いは、開発者がローカルで送信でき、各開発者が複製 (git clone) を通じて完全な Git リポジトリをローカル マシンにコピーすることです。

#Git は分散バージョン管理システムです

2 (1).png#Git には次の特徴があります:

    Git 内の各クローンのリポジトリは同等です。任意のリポジトリをクローンして独自のリポジトリを作成でき、必要に応じて自分のリポジトリを他の人のソースとして使用することもできます。
  • Git のすべての抽出操作は、実際にはコード リポジトリの完全なバックアップです。
  • 送信はローカルで完全に完了します。他の人があなたに承認を与える必要はありません。あなたはリポジトリのマスターであり、送信は常に成功します。
  • 古いバージョンに基づいた変更でも正常に送信でき、送信すると古いバージョンに基づいて新しいブランチが作成されます。
  • Git の送信は、作業に完全に満足するまで中断されません。他の人に PUSH するか、他の人にリポジトリを PULL してください。PULL プロセスと PUSH プロセス中にマージが発生します。不可能な競合自動的に解決されない場合は、手動で完了するように求められます。
  • 競合の解決は、SVN のような提出コンテストのようなものではなくなりましたが、マージと競合の解決は必要に応じて実行されます。
  • Git は集中作業モードをシミュレートすることもできます
  • Git バージョン ライブラリはサーバー上で統合されています
  • Git リポジトリを承認できます。誰がリポジトリを作成できるか、誰がリポジトリに PUSH できるか、誰がリポジトリを読み取る (クローンできる)
  • チームのメンバーが最初にクローンを作成しますサーバーのリポジトリをローカルに配置し、サーバーのリポジトリから最新の更新を頻繁にプル (PULL) します。
  • チーム メンバーは、他のメンバーが同期するときに、リポジトリ内で変更をサーバーのリポジトリにプッシュ (PUSH) します。リポジトリ (PULL) を使用すると、変更が自動的に取得されます。
  • Git の一元化された作業モデルは非常に柔軟です。
  • ##ネットワークから完全に切断することができます移動中や出張中など、Git サーバーが配置されている場所で、通常どおりコード ライブラリを使用できる
  • ネットワークにアクセスできれば十分ですGit サーバーが配置されている場所では、PULL と PUSH でサーバーとの同期を完了し、送信できます。
  • Git は rebase コマンドを提供しており、これにより、変更が最新のコード実装に基づいているように見えるようになります。
  • Git には Subversion よりも多くの作業モードから選択できます
svn

# とは##SVN は Subversion の略で、オープンソースのバージョン管理システムです。ブランチ管理システムの効率的な管理を通じて、つまり、複数の人が同じプロジェクトを共同開発し、リソースの共有を実現するために使用されます。を追求し、最終集中を実現するスタイルマネジメント。 SVN は、時間の経過とともに変化するデータを管理します。このデータは中央リポジトリに配置されます。このアーカイブは通常のファイル サーバーとよく似ていますが、すべてのファイル変更を記憶します。このようにして、ファイルを古いバージョンに復元したり、ファイルの変更履歴を参照したりできます。 Subversion は、プログラム ソース コードを含むあらゆる種類のファイルの管理に使用できる汎用システムです。

SVN は集中バージョン管理システムです。

集中バージョン管理システムには、すべてのファイルのリビジョンを保存する単一の集中管理サーバーがあり、一緒に作業する人々はクライアントを通じてこのサーバーに接続し、最新のファイルを取得したり、更新を送信したりします。

svn の特徴は次のように要約できます。

1 (1).png

各リポジトリは、各ユーザーごとに固有の URL (公式アドレス) を持ちます。このアドレスからコードとデータを取得します。

  • コードの更新を取得するには、この一意のバージョン ライブラリに接続し、同期して最新のデータを取得することのみ可能です。

  • 提出にはネットワーク接続が必要です (ローカル リポジトリ以外);

  • 送信には承認が必要です。書き込み権限がない場合、送信は失敗します。

  • 送信は毎回成功するとは限りません。他の誰かがあなたより先に提出すると、「変更は古いバージョンに基づいています。最初に更新してから提出してください」というプロンプトが表示されます...など;

  • 競合解決は競争です送信速度の違い: 速い人は最初に送信しても何も起こりませんが、遅い場合は後で送信すると、面倒な競合解決が発生する可能性があります。

利点: プロジェクト内の他の人が取り組んでいることを誰もがある程度見ることができます。管理者は、各開発者の権限を簡単に制御することもできます。

欠点: 中央サーバーの単一障害点。

1 時間ダウンした場合、誰もこの 1 時間以内に更新、復元、比較などを送信できなくなり、共同作業することができなくなります。中央サーバーのディスクに障害が発生し、バックアップが作成されないか、バックアップのタイミングが十分でない場合、データが失われるリスクがあります。最悪のシナリオは、クライアントによって抽出された一部のスナップショット データを除いて、プロジェクト全体の変更履歴レコードがすべて完全に失われることですが、これは依然として問題であり、すべてのデータが抽出されたことを保証することはできません。

原則として、svn はファイルの内容の特定の違いのみを考慮します。毎回、どのファイルが更新されたか、どの行と内容が更新されたかが記録されます。

svn と git の適用範囲の違い

  • 適用できるオブジェクトが異なります。

    Git は、オープンソース プロジェクトに携わる開発者に適しています。彼らは高度な専門知識を持っているため、使いやすさよりも効率を重視しています。 SVN は異なり、一般的な企業の開発チームに適しています。使いやすくなりました。

  • #使用される機会は異なります。

    Git は、インターネットを介して複数の開発ロールを持つ単一プロジェクトの開発に適しており、SVN は、プロジェクト マネージャーが調整する企業内での複数の並行プロジェクトの開発に適しています。

  • 権限管理戦略は異なります。

    Git には厳密な権限管理がありませんが、アカウントを持っていれば、コードのエクスポート、インポート、さらにはロールバック操作を行うことができます。 SVN は厳密な権限管理を備えており、特定のサブディレクトリに対する権限をグループまたは個人ごとに制御できます。読み取り権限と書き込み権限を区別します。より厳密には、ロールバック操作はサポートされていません。コードが常にトレース可能であることを確認してください。

  • #ブランチの利用範囲が異なります。
  • Git では、ウェアハウス全体を分岐することしかできず、一度削除すると復元することはできません。 SVN では、ブランチは任意のサブディレクトリをターゲットにすることができます。これは本質的にコピー操作です。したがって、多くの階層ブランチを作成し、不要になったら削除し、将来必要になったときに古い SVN バージョンをチェックアウトするだけで済みます。

  • 3 番目の点に基づいて、Git は純粋なソフトウェア プロジェクト、通常は Linux カーネル、busybox などの一部のオープン ソース プロジェクトに適しています。それに対して、SVN は複数のプロジェクト管理を得意としています。
  • たとえば、携帯電話プロジェクトの bsp/設計ドキュメント/ファイル システム/アプリケーション/自動コンパイル スクリプトを SVN ウェアハウスに保存したり、5 つの携帯電話プロジェクトのファイル システムを SVN に保存したりできます。 n (プロジェクト数)*m (コンポーネント数) のリポジトリを git に確立する必要があります。 SVN では、n または m までしか必要ありません。

  • Git はバージョン番号として 128 ビット ID を使用し、チェックアウト時にそれがどのブランチであるかを指定する必要がありますが、SVN はグローバルに一意のバージョン番号として増加するシリアル番号を使用します。どちらの方が簡潔でわかりやすいでしょうか。 gittag を使用してリテラルのエイリアスを作成することはできますが、結局のところ、それは特別なバージョンにのみ適用されます。
  • トレーサビリティ
  • git の一般的な開発プロセスは、ブランチの確立、開発、ローカル マスターへの送信、ブランチの削除です。この結果、以前の変更の詳細は失われます。

    詳細を失うことなく、SVN で同じことを実行します。

    #部分更新、部分復元。
  • SVN はフォルダーごとに .svn フォルダーを作成して管理するため、部分的な更新や復元も簡単に実現できます。特定の部分だけを更新したい場合は、svn を使用するとうまく実行できます。もちろん、git は過去のバージョンから復元することもできますが、部分的な復元は簡単にはできません。

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

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

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