Wenn ich ein Projekt abspalte, das auf Github gehostet wird. Gabel ich alle Zweige? Woher weiß ich, auf welchem Zweig meine Gabel basiert? Mit anderen Worten, welcher Zweig wird auf meinen PC heruntergeladen?
Wenn ich ein Projekt abspalte, das auf Github gehostet wird. Gabel ich alle Zweige? Woher weiß ich, auf welchem Zweig meine Gabel basiert? Mit anderen Worten, welcher Zweig wird auf meinen PC heruntergeladen?
Antworten:
Alle Zweige auf GitHub werden in eine Abzweigung kopiert. (Dies schließt natürlich keine Zweige ein, die überhaupt nicht an GitHub gesendet wurden.)
Eine Gabelung ist jedoch eine GitHub-zu-GitHub-Operation. Es wird nichts auf Ihren PC kopiert. Es ist nicht ganz dasselbe wie ein Git- Klon . Wenn Sie fragen möchten, was kopiert wird, wenn ich ein Projekt klone, lesen Sie das Handbuch für git-clone(1)
.
Denk darüber so:
Das Repo [sitory] entspricht der Zusammenarbeit des Teams in einer oder mehreren Niederlassungen. Alle Mitwirkenden haben ihre eigene Kopie davon.
Jede Gabel des Haupt-Repos entspricht der Arbeit eines Mitwirkenden. Eine Gabel ist wirklich ein Github-Konstrukt (kein Git-Konstrukt), um einen Klon des Repos in Ihrem Benutzerkonto zu speichern. Als Klon enthält er alle Zweige im Haupt-Repo zum Zeitpunkt der Herstellung der Gabel.
Jeder Zweig innerhalb der Gabel und / oder im Haupt-Repo kann verschiedenen Arten von Dingen entsprechen, je nachdem, wie Sie arbeiten möchten. Jeder Zweig kann sich auf eine Version des Projekts beziehen, kann aber auch verschiedenen Entwicklungskanälen wie Hotfixes oder experimentellen Arbeiten entsprechen.
Die Pull-Anfrage (im GitHub-Ökosystem) entspricht der Aufgabe. Jedes Mal, wenn ich eine isolierte fertige Aufgabe zum Haupt-Repo beitragen möchte, erstelle ich eine Pull-Anfrage, die den in dieser Aufgabe vorgenommenen Commits entspricht . Diese Commits werden entweder von meiner Gabel oder meinem Zweig zum Haupt-Repo gezogen .
Ein Commit ist eine Reihe von Änderungen am Code. Dies ist eines der interessantesten Dinge an Git. Sie übertragen keine Dateien, Sie übertragen Änderungsprotokolle.
Fork ist ein Klon auf der GitHub-Seite (er klont alles).
Wenn Sie ein Repo klonen, erhalten Sie die gesamte Geschichte dieses Repos mit all seinen Zweigen.
Obwohl Sie theoretisch den Standardzweig eines Remote-Repos ändern können , sucht ein Klon aus einem GitHub-Repo hauptsächlich nach dem Hauptzweig. Um den "Standard" -Zweig zu ändern, den ein GitHub-Klon erhält, müssen Sie den Hauptzweig umbenennen.
Wenn Sie auf der Github-Website einen Fork eines Projekts erstellen, erhalten Sie alle Zweige aus dem Upstream-Projekt.
Wenn Sie von Ihrer neu geprägten Gabel auf Ihren lokalen PC klonen, zeigt die origin
Fernbedienung auf Ihrem PC auf den Hauptzweig Ihrer Gabel auf Github.
upstream
Zweig erstellen . und sie sagen dir, wie es geht.
Dies kann sehr gut erklärt werden. Sie haben ein zentrales Repository bei GitHub. Immer wenn Sie einen Klon davon auf Ihrem PC verwenden, um einige Änderungen vorzunehmen, wird dieser lokale Klon des Hauptrepositorys als Fork bezeichnet.
Der Zweig ist etwas anderes und ist im Fork / Repo enthalten. Eigentlich ist die Branche Ihre Arbeit in einem anderen Entwicklungsstadium. Sie werden nach Bedarf erstellt, um eine Reihe von Funktionen zu speichern, verschiedenen Benutzern Zugriff zu gewähren, dem Client die Site zu demonstrieren usw.
Ich möchte ein reales Beispiel dafür geben, wann wir Zweige und wann Gabeln verwenden
Wir haben GitLab in unserem Shop und manchmal müssen wir an Paketen aus einem Laravel-Projekt arbeiten. Normalerweise erstellen wir einen Zweig und übertragen Änderungen an dem Zweig, den wir in unserer lokalen VM-Entwicklungsumgebung getestet haben, wenn wir mit dem eigentlichen Laravel-Projekt arbeiten.
Nehmen wir an, unser Projekt befindet sich in
https://github.com/yardpenalty/mainproject.git
Filialnutzung:
Nehmen wir an, der Zweig heißt It_doesnt_matter
Sobald wir unsere Niederlassung so haben, wie wir es für die Produktion wollen, machen wir unseren letzten Druck auf diese Niederlassung und erstellen eine Zusammenführungsanforderung, die dann zum Testen an UAT gesendet wird. Sobald der Test die Qualitätskontrolle durchlaufen hat, werden die Änderungen in die Produktion zusammengeführt.
Die Zusammenführung aus dem It_doesnt_matter
Zweig wird jetzt in das Masterprojekt übertragen
beim https://github.com/yardpenalty/mainproject.git
Angenommen, das Paketprojekt befindet sich unter
https://github.com/yardpenalty/mypackage.git
Beachten Sie, dass das Hauptprojekt dieses Paket in der Produktion verwendet, sodass wir keine Änderungen vornehmen können, indem wir sie (unter anderem) einfach auf dieses Paket übertragen. Angenommen, ein Webentwickler muss dieses Paket bearbeiten, um Änderungen an der Produktion vorzunehmen.
Ein einfacher Zweig funktioniert auch nicht, da wir unsere Änderungen nicht sehen können, ohne das Paket usw. zu veröffentlichen.
Gabelverwendung: Jetzt müssen wir mit unserem Paket ein wenig tricksen, damit wir über eine Gabel einen Klon des Produktionspakets erstellen. Die composer.json-Dateien können aktualisiert werden, um auf die Abzweigung zu verweisen, die sich jetzt bei a befindet Benutzer- oder Gruppenpfad befindet
Also werden wir eine Gabelung schaffen https://github.com/yardpenalty/mypackage.git
und nenne es https://github.com/yardpenalty/yards/mypackage.git
Jetzt können wir unsere Datei composer.json aktualisieren , um auf dieses Paket in unseren "Repositories" zu verweisen: [Array wie dieses und los geht's!
{
"type": "github",
"url": "https://github.com/yardpenalty/yard/mypackage.git"
}
]]