プロジェクトごとに「トピック ブランチ」を使用します。
git checkout master
git add file.r ;# this is your master template upon which others are based
git commit -m "Committed the master file"
次に、各プロジェクトについて:
git checkout -B <project> master ;# create and checkout <project> branch
<hack away on file.r, commit when you want>
git push origin <project> ;# to share <project> with others
したがって、実際にmaster
は、project1
、project2
、project3
などの基になっている が得られます。あなたが望むことを正確に行い、それをすべて正気に保つ必要があります。
複数のリポジトリを推奨する他のソリューションに対するこのソリューションの利点:
- 管理が容易になります。実際には最大で 20 ~ 30 のブランチを持つリポジトリが 1 つしかありません。たくさんのように聞こえますが、明確なラベルがあれば、特に小さなファイル セットしか管理していない場合は、自分がどこにいるかを簡単に知ることができます。
- あなたが怠け者なら(私のように)簡単な差分。2 つのプロジェクト間のファイルの違いは
file.r
、git diff projectA projectB -- file.r
. 複数のリポジトリで同じことを行うことができますが、git diff projectA/master projectB/master -- file.r
. 20 ~ 30 個のプロジェクト リポジトリがあるか、サブモジュールを使用している場合、混乱する可能性があります。
- 簡単な更新。更新の取得は
git fetch origin
、出力を発行して監視するのと同じくらい簡単です。
- 簡単なクローン。新しいローカル リポジトリをセットアップするときは、1 つのリモートを複製します。すべてを取得するまで、オリジン、次に
git remote add <project>
リポジトリのクローンを作成する必要はありません。
短所 (不完全なリスト):
- この方法は、チェックアウトしたブランチに細心の注意を払うことに依存しています。ディレクトリ構造については何もわからないため、
file.r
特定の瞬間に何を見ているかがはっきりしない場合があります。それは契約を破る可能性があります。私は知らないよ。ワークフローによると思います。
- KurzedMetal がコメントで指摘しているように、すべてのプロジェクトを 1 つにマージする必要がある場合、これはすぐに面倒になる可能性があります。そのため、ソースコードにはお勧めしません。ただし、個別の
R
プロジェクトの場合、これはあまり問題にならない場合があります。