私はバージョン管理全般についてかなり初心者ですが、git に関してはさらに初心者です。最近、自分のコンピューターに git をインストールし、NAS サーバー上にセットアップしました。
ただし、複数のクライアント フォルダーがあり、クライアント フォルダーごとに複数のプロジェクト フォルダーがあります。
これらの各クライアント フォルダーは巨大なリポジトリであり、その中にすべてのプロジェクトが含まれています。
私が疑問に思っているのは、これを分解する方法があるかどうかです。たとえば、次のようになります。
NASは私の「原点」であり、gitoliteがインストールされています
コンピュータ1には、これまでに作成されたクライアントフォルダ内のすべてのプロジェクトフォルダ(クリーンブランチ)があります。
コンピュータ2ではないクライアントブランチの新しいチェックアウト(そのブランチのすべてのプロジェクトが完了しており、その作業コピーは必要ないため)ですが、するそのクライアント用の新しいプロジェクト フォルダー「newproject」があります。
コンピュータ2からNASリポジトリにコミットしてプッシュする方法はありますか?
あるいは、これらすべてを整理するより良い方法はあるのでしょうか?
答え1
Git リポジトリをより適切に構成するには、クライアント プロジェクトごとに 1 つのリポジトリを用意します (つまり、クライアント フォルダー内に複数のリポジトリを用意します。プロジェクトのルート ディレクトリと一致する各クライアント フォルダーのサブディレクトリ内に 1 つの .git を用意します)。
クライアントごとに 1 つの巨大なリポジトリを持つという考え方は、必ずしも良い考えではありません。特に次の理由からです。
- そのフォルダーが、互いに独立して進化できるプロジェクトで構成されている場合。
- 合計量が膨大である場合(つまり、どのクローンも大きなものになる)
これらのプロジェクトの一部がリンクされている場合、それらを1つの(親)リポジトリとして表示することができます。サブモジュール。