2015-11-17 4 views
6

Die meisten Git-Workflows sagen, dass Sie sich nie an den Master Ihrer Gabel binden, weil dann Ihr Master-Zweig vom Ursprung abweicht. Aber würde es nicht funktionieren, nur Ihre Commits (von Ihrem Master-Zweig) auf dem Upstream-Master neu zu erstellen? Ich weiß, dass es etwas komplizierter ist, aber ich sehe nicht, warum das eine schlechte Übung ist.Warum ist es eine schlechte Übung, sich in den Zweig Ihrer Gabel zu begeben?

+2

Das hängt wirklich davon ab, was Sie tun. Es wird keine richtige Antwort geben. –

+0

@ChrisMartin Also könnten Sie ein Beispiel geben, wann es ein Problem wird und wann es in Ordnung ist? – rb612

+2

Dies scheint mir eine dieser nützlichen Fragen zu sein, die eine Ausnahme von der "meinungsbasierten" Regel darstellen sollten. –

Antwort

2

Die meisten Leute würden wahrscheinlich wollen nicht jeder Mal, wenn sie wollen rebase von stromaufwärts ziehen, weil Sie etwas Geschichte Metadaten (Zeitstempel, potenzielle Quetschen, etc.) verlieren. Aber für andere Leute ist das vielleicht kein Problem.

Ein anderer Grund wäre für Pull-Requests. Im Idealfall würden Sie den Inhalt Ihrer Pull-Anfrage in einem Zweig des Themas haben, der dann (hoffentlich) in Ihren Upstream-Ordner integriert wird. Danach löschen Sie einfach diesen Zweig und ziehen ihn aus dem Master. Auf diese Weise haben Sie Ihre alten (jetzt duplizierten) Commits noch nicht in Ihrer Geschichte.

Es gibt etwas zu sagen in der Fähigkeit, in der Lage zu sein, Ihren Meisterzweig "rein" in dem Sinne zu halten, dass Sie jederzeit Ihren Meister ziehen können und keine Konflikte haben. Auf diese Weise können Sie 6 Monate nach der Gabelung auf einen Blick sehen, was "ihres" und was "Ihr" ist.

+0

Das macht sehr viel Sinn. Vielen Dank! Was meinst du mit "So hast du deine alten (jetzt duplizierten) Commits noch in deiner Geschichte". Wie würden sie immer noch in der Geschichte dupliziert werden? – rb612

+0

Nehmen wir an, Sie erstellen ein Commit, das Sie für den Upstream freigeben möchten. Sie machen dieses Commit auf Master (Rebasing auf dem Weg vielleicht) und dann, wenn es Zeit ist zu teilen, erstellen Sie eine Pull-Anfrage von diesem Commit. Wenn diese Pull-Anforderung dann in Upstream zusammengeführt wird, ziehen Sie beim nächsten Pull ein Duplikat Commit ein (inhaltlich). Die Rebase kann jedoch für Sie aufräumen, abhängig von irgendwelchen Optimierungen durch den Upstream-Betreuer. –

+0

Hmmm ... aber wäre Ihr lokaler Master-Zweig nicht bereits synchron mit dem Upstream? Sobald der ursprüngliche Repo-Beitragende Ihre Änderungen einzieht, würde ich denken, dass Upstream/Master und lokaler Master gleich bleiben würden, aber mir könnte etwas fehlen. – rb612

2

Es ist technisch möglich, aber verwirrend für den Betreuer des ursprünglichen Repos.

  • jeder Zweig aus dem ursprünglichen Repo sollte von einer git fetch upstream (auch nicht durch eigene Gabel) aktualisiert wird
  • Wenn Sie eine PR zu tun, ist der Name der Branche wichtig, die Art der zu isolieren und zu charakterisieren PR Ihre
+0

Siehe auch http://StackOverflow.com/a/14681796/6309 – VonC

0

Wir verwenden Git als eine bessere Svn. In diesem Modus ist das direkte Einchecken in den Master normal.

Verwandte Themen