2009-08-11 17 views
5

Ich frage mich, ob dies möglich ist.Forking privaten Git Repo in github.com

Ich habe ein "Starter-Projekt" in Github (privates Repository). Was ich gerne mache, ist customerA repo (auch privat) zu erstellen, aber es sollte vom "Starter-Projekt" gespalten werden. Meine Idee ist, dass Kunde B, Kunde C, alle ihren eigenen privaten Repo haben könnten und wenn ich einen Bug behebe, der im "Starter-Projekt" generisch ist, kann ich den Bug-Fix dann einfach an alle meine Kunden ziehen.

Ich habe nicht gefunden, um dies zu lösen. Momentan löste ich dies durch das Klonen des privaten Projektes. Ist es ein Git Problem oder github.com Problem?

arbeiten um?

+0

+1 zu @jrockway – memmons

Antwort

7

Dafür gibt es Zweige. Jeder Kunde bekommt eine Filiale, Problem gelöst.

Aber ... wenn das Repository jedes Kunden in einem separaten Konto ist, können Sie einfach die üblichen Git-Tools verwenden, um Änderungen zu teilen. Als Beispiel:

$ git clone [email protected]:client/your-project 
$ cd your-project 
$ git remote add original [email protected]:you/your-project 
$ git fetch original 
$ git cherry-pick <change from original> 
$ git merge <whatever> 
$ git rebase <whatever> 
$ git push origin 

usw.

Github Web-UI ist nur eine Bequemlichkeit für die häufigsten Fälle. Wenn Sie etwas ungewöhnliches tun müssen, verwenden Sie einfach Ihre üblichen Git-Tools. Github ist es egal.

+0

In einem Fall wie diesem, was passiert, wenn Sie eine Datei am Master ändern, die in der Branche angepasst ist? Wenn Sie vom Master synchronisieren, werden die Änderungen auf Zweigstellenebene überschrieben? –

3

Für Git ist das Klonen dasselbe wie Forking, oder genauer gesagt: Git kennt keine Forking, das ist eine GitHub-Sache. Technisch sind alle Gabeln einfach Klone mit unterschiedlichen Besitzern.

Wenn Sie also Ihr Starter-Projekt für drei Kunden klonen, haben Sie effektiv ein einziges Repository mit mehreren Verzweigungen, da jede Verzweigung eine Verzweigung ist. Vielleicht sollten Sie sich mit Submodulen für Ihr Startprojekt beschäftigen und es in jedes Kunden-Repository aufnehmen?