Git: Zweig oder Gabel?

17

Ich habe ein Spielprojekt, das zwei Versionen haben wird:

  1. Eine einfache Version des Spiels, der Kern.
  2. Eine erweiterte Version des Spiels.

Ich habe die 1. Version in meinem öffentlichen Repository und nur ich werde daran arbeiten. Was die 2. Version betrifft, werden zwei Freunde von mir und ich daran arbeiten. Der entscheidende Teil ist, dass die beiden Versionen in meinem Repository bleiben sollen.

Ich dachte, ich könnte Zweige dafür verwenden, aber angesichts dieser Frage und ihrer Antwort ist es keine gute Praxis, dies in Bezug auf die Versionierung zu tun. Soweit ich herausgefunden habe, ist es nicht möglich, ein eigenes Repository zu forken.

Welche Möglichkeiten habe ich hier? Wie kann ich beide Versionen in meinem Repository behalten?

Varaquilex
quelle
3
Eine Gabel ist ein Ast, der nur an einer anderen Stelle gelagert wird.
@MichaelT Ok. Sollen Gabeln wie Zweige irgendwann zusammengelegt werden?
Varaquilex
22
Fork ist ein Github-Konzept, kein Git-Konzept. Es wird einfach geklont und Ihrem Konto gutgeschrieben. Das Klonen ist also das, wonach Sie suchen. Siehe stackoverflow.com/questions/6286571/git-fork-is-git-clone
pdr
@Varaquilex Way Müssen Sie beide Versionen in einem einzigen Repository aufbewahren? Auch forkein Repository ing wird ein neues Repository in Ihrem Konto erstellen.
Mahdi
1
Warum nicht nur eine Version, die im einfachen oder erweiterten Modus ausgeführt werden kann? Natürlich wären einige Teile des Codes nur in einfachen und einige Teile nur in fortgeschrittenen Versionen aktiv, aber ich stelle mir vor, dass eine Menge geteilt werden würde.
BDSL

Antworten:

11

Mir scheint, dass Sie zwei Repositorys benötigen, nicht zwei Zweige . Eine Verzweigung ist ein Mechanismus, um die Änderungen in einem einzelnen Repository zu verarbeiten, um sie schließlich mit dem Rest des Codes zusammenzuführen.

Wenn Sie beide Versionen einer ähnlichen Codebasis wirklich im selben Repository behalten möchten , können Sie nur eine Verzweigung auswählen. Wie bereits erwähnt, besteht der Hauptzweck einer Verzweigung jedoch darin, einige bestimmte Festschreibungen auf eine bestimmte Weise zu trennen dass sie während der Entwicklungsphase nicht mit dem Rest des Codes in Konflikt stehen und sie zusammenführen, wenn sie bereit sind, loszulegen.

Es gibt Situationen, in denen ein Repository zwei leicht unterschiedliche Zweige hat - z. B. 32-Bit- und 64-Bit-Versionen desselben Quellcodes. Ich empfehle Ihnen jedoch, getrennte Repositorys zu verwenden, wenn dies eine Option ist.

Mahdi
quelle
6

Die Antwort auf die Frage "Soll ich klonen oder verzweigen?" Entspricht genau der Antwort auf die Frage "Möchte ich eine eigene Version dieses Projekts?" yes = fork, no = klone das Repository.

In Git ist Branch eine leichte Sache, die oft nur vorübergehend ist und gelöscht werden kann. Eine Gabel (auf Github) ist ein neues Projekt, das auf einem vorherigen Projekt basiert. Sie klonen ein Repository, um es als Teammitglied zu bearbeiten.

Bei vielen öffentlichen Projekten haben Sie das Projekt gegabelt, um die funktionierenden Änderungen aus dem Hauptprojekt herauszuhalten.

Verzweigen Sie in Phase 2 das Projekt, klonen Sie es dann auf Ihren Arbeitscomputer und lassen Sie Ihre Freunde dasselbe tun.

DwB
quelle
Wie kann ich mein eigenes Projekt aufteilen?
Varaquilex
Wählen Sie das Repository in Github und klicken Sie dann auf Gabel (Schaltfläche oben rechts für mich)
DwB
Ich weiß, wie das geht. Wenn Sie versuchen, Ihr eigenes Projekt zu klonen, werden Sie einfach zum Repository umgeleitet, so wie Sie die Schaltfläche "Aktualisieren" gedrückt haben. Es werden keine zusätzlichen Repositorys aufgelistet, wenn Sie Ihre Repositorys durchsuchen, nachdem Sie versucht haben, Ihr eigenes Projekt aufzuteilen. Ich denke, ich mache ein neues Repo, kopiere den Inhalt des anderen Repos, das ich teilen möchte, und arbeite dort weiter mit anderen Leuten.
Varaquilex
0

Wie es sich wirklich anhört, möchten Sie ein Submodul. Wenn Sie das erste Repo (Ihr privates einfaches Repo) erstellen und es dann als Submodul zum erweiterten Versionsrepo hinzufügen, sollten Sie in der Lage sein, Änderungen am Submodul im erweiterten Repo zu verfolgen und zu übernehmen, während Sie das private einfache Repo entwickeln.

Ryan Holleran
quelle
1
Einige Leute haben sich die Zeit genommen, um -1 Ryans Antwort zu beantworten, haben sich aber nicht die Zeit genommen, um einen Kommentar dazu abzugeben, und dieses Verhalten widerspricht dem Geist der SO-Richtlinien. Wenn in der Frage des OP "Kern" in beiden Bäumen identisch war und sowohl einen "einfachen" als auch einen "fortgeschrittenen" Wrapper um den Kern hatte, dann ist diese Antwort zumindest vernünftig.
Scott Prive
Ich habe abgestimmt, aber er sollte wahrscheinlich eine Erklärung wie Ihre hinzufügen, die erklärt, warum ein Submodul gut wäre und wie es funktionieren würde. Das Aufteilen des allgemeinen Codes in eine Bibliothek, die als Submodul aufgenommen werden kann, ist eine gute Idee, aber ohne anzugeben, dass dies getan werden soll, erscheint der Vorschlag eines Submoduls nicht sofort sinnvoll.
Sean Burton