Skip to main content

このバージョンの GitHub Enterprise はこの日付をもって終了となりました: 2022-10-12. 重大なセキュリティの問題に対してであっても、パッチリリースは作成されません。 パフォーマンスの向上、セキュリティの向上、新機能の向上を図るために、最新バージョンの GitHub Enterprise にアップグレードします。 アップグレードに関するヘルプについては、GitHub Enterprise サポートにお問い合わせく� さい

Subversion と Git の違い

Subversion (SVN) リポジトリは、Git リポジトリに似ています。ですが、プロジェクトのアーキテクチャの点からいくつかの違いがあります。

ディレクトリの構� 

プロジェクト内の各 参照 またはコミットのラベル付きスナップショットは、trunkbranches、および tags などの特定のサブディレクトリにまとめられます。 たとえば、2 つの feature のある開発中の SVN プロジェクトは、このようになるでしょう:

  sample_project/trunk/README.md
  sample_project/trunk/lib/widget.rb
  sample_project/branches/new_feature/README.md
  sample_project/branches/new_feature/lib/widget.rb
  sample_project/branches/another_new_feature/README.md
  sample_project/branches/another_new_feature/lib/widget.rb

SVN のワークフローは以下のようになります:

  • trunk ディレクトリは、プロジェクトの最新の安定リリースを表します。
  • アクティブな feature の作業は、branches の下のサブディレクトリで開発されます。
  • feature が完了した時、feature ディレクトリは trunk にマージされ消去されます。

Git プロジェクトも、単一のディレクトリに保管されます。 ですが、Git は、その参照を特別な .git ディレクトリに保管するため、その詳細は� れています。 たとえば、2 つの feature のある開発中の Git プロジェクトは、このようになるでしょう:

  sample_project/.git
  sample_project/README.md
  sample_project/lib/widget.rb

Git のワークフローは以下のようになります:

  • Git リポジトリは、ブランチおよびタグのすべての履歴を、 .git ディレクトリ内に保管します。
  • 最新の安定したリリースは、デフォルトブランチに含まれています。
  • アクティブな feature は、別のブランチで開発されます。
  • feature が完了すると、フィーチャブランチはデフォルトブランチにマージされ、消去されます。

Git はディレクトリ構� は同じままですが、SVN とは違い、ファイルの変更内容はブランチベースです。

サブプロジェクトを含める

サブプロジェクト は、メイン プロジェクト外で開発され管理されるプロジェクトです。 一般的に、自分でコードを管理する必要なく、プロジェクトに何らかの機能を� えるためにサブプロジェクトをインポートします。 サブプロジェクトがアップデートされる度、すべてを最新にするためにプロジェクトと同期できます。

SVN では、サブプロジェクトは、SVN external と呼ばれます。 Git では、Git サブモジュール と呼ばれます。 コンセプトは似ていますが、Git サブモジュールは自動では最新状態のままにはなりません。プロジェクトに新しいバージョンを取り込むためには、明示的に要求する必要があります。

詳しい情� �については、Git のドキュメントの「Git のツール - サブモジュール」を参照してく� さい。

履歴を保存する

SVN は、プロジェクトの履歴は変更されないものとして設定されています。 Git では、git rebase などのツールを使用して、以前のコミットと変更を変更できます。

GitHub は Subversion クライアントをサポートしており、同じプロジェクトで Git と SVN の両方を使用している� �合、予期しない結果が発生する可能性があります。 Git のコミット履歴を操作した� �合、常に同じコミットが SVN の履歴に残ります。 機密データを誤ってコミットした� �合は、それを Git の履歴から削除するのに役立つ記事を用意しています。

参考資料