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?
Antwort
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.
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
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. –
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
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
Siehe auch http://StackOverflow.com/a/14681796/6309 – VonC
Wir verwenden Git als eine bessere Svn. In diesem Modus ist das direkte Einchecken in den Master normal.
- 1. Warum ist (wahr) eine schlechte Übung?
- 2. Ist es eine schlechte Übung, selbst in Decorators zu verwenden?
- 3. Ist es eine schlechte Übung, in $ _POST zu schreiben?
- 4. Ist es eine schlechte Übung, Variablen eines Callbacks zu spiegeln?
- 5. Ist es eine schlechte Übung, ein statisches Feld zu haben?
- 6. Warum ist es eine schlechte Übung, mehrere Datenbankverbindungen in einer Anfrage zu erstellen?
- 7. Ist Delphi "mit" Keyword eine schlechte Übung?
- 8. Ist es eine schlechte Übung, nur eine Aktivität in Ihrer Android-App zu verwenden, die Fragmente verwendet?
- 9. Ist es eine schlechte Übung, den Status in einer statischen Klasse zu haben?
- 10. Ist es eine schlechte Übung, View-Code in den Controller zu schreiben?
- 11. Ist das eine schlechte Übung? C++
- 12. Ist [var = modify (var)] eine schlechte Übung?
- 13. Ist es eine schlechte Übung, einen intelligenten Zeiger einzugeben?
- 14. Windows-Dienst Implementierung von IDisposable - Ist es eine schlechte Übung?
- 15. Schlechte Übung Code in Standardkonstruktor zu integrieren
- 16. Ist es eine schlechte Übung, eine willkürliche Ausnahme zu werfen, wenn CancellationToken gesetzt ist?
- 17. Den Build durchbrechen, warum ist es eine schlechte Sache?
- 18. Ist es eine schlechte Übung, eine Kindklasse mit einem Elternobjekt zu konstruieren?
- 19. Ist es eine schlechte Übung, von Benutzern die Installation des Mono-Frameworks zu verlangen?
- 20. Ist es eine gute Übung, den Skripttyp zu ignorieren?
- 21. Ist es eine schlechte Übung, eine Variable auf einen Dummy-Wert zu initialisieren?
- 22. Ist es eine schlechte Übung, Inline-Event-Handler in HTML zu verwenden?
- 23. Ist es eine schlechte Übung, System.Windows.Form in Ihrem Unit Test-Projekt zu referenzieren?
- 24. Ist es eine schlechte Übung, mehrere Hintergrunddienste in einer einzigen Android-App zu verwenden?
- 25. Ist es eine schlechte Übung, nur eine Ausnahme zu protokollieren, wenn sie abgefangen wird?
- 26. Ist Interface als Label eine schlechte Übung in Java OO?
- 27. WCF - ist es eine schlechte Übung, einen Kanal für eine lange Zeit offen zu lassen?
- 28. Java - ist es eine schlechte Übung, einen Versuch/Fang in einem Versuch/Fang zu versuchen?
- 29. Verbindung Git Zweig zu GitHub Gabel
- 30. Ist es eine schlechte Übung, "Klasse und Schnittstellen im selben Paket zu kombinieren"?
Das hängt wirklich davon ab, was Sie tun. Es wird keine richtige Antwort geben. –
@ChrisMartin Also könnten Sie ein Beispiel geben, wann es ein Problem wird und wann es in Ordnung ist? – rb612
Dies scheint mir eine dieser nützlichen Fragen zu sein, die eine Ausnahme von der "meinungsbasierten" Regel darstellen sollten. –