Gründe für die nicht-Arbeit im master-branch im Git
So, ich bin ziemlich neu in git und ich habe nach ein wenig Lesen um in den letzten paar Wochen ich habe ein paar Menschen, die sagen, dass der master-branch sollte nicht geändert werden, ist aber ziemlich verzweigt aus und dann zusammengeführt.
Ich bin glücklich genug, um die Arbeit mit Zweigen, aber Frage mich nach den Gründen für das nicht arbeiten auf dem master-branch?
Du musst angemeldet sein, um einen Kommentar abzugeben.
ich denke, die übliche Argumentation ist, dass der master-branch darstellen sollte die 'stable' - die Geschichte des Codes. verwenden Sie die Zweige zu Experimentieren mit neuen Funktionen, die Sie implementieren, und wenn Sie ausgereift genug ist, können Sie verschmelzen Sie wieder zu meistern.
diese Weise code in der master fast immer bauen Sie ohne Probleme und können meist direkt für die Freigaben.
nehmen wir git.git (das offizielle git-repository) als Beispiel. es gibt mehrere Zweige, am auffälligsten:
so,
master
code enthält, ist sehr wahrscheinlich, um am Ende in der nächsten Version von git.next
enthält code getestet, die potenziell zusammengeführt werden, in diemaster
Zweig.pu
(proposed-updates, iirc) enthält ganz neue (und wahrscheinlich) nicht getesteten code.pu
gilt als instabil und werden resettet und zurückgesetzt, um junio gefallen.next
vielleicht wieder nach einem release oder während eines release-Zyklus, aber dies ist weniger verbreitet.master
in Stein gemeißelt ist und nie geändert, nachdem es abgelegt und öffentlich zugänglich gemacht.sehen Sie, dass die Veränderungen werden zusammengeführt aus
pu
zunext
und vonnext
zumaster
wenn Sie für würdig erachtet und nicht brechen Zeug.Zweig
maint
wird verwendet, um bugfixes, die auch für ältere Versionen von git.maint
ist in der Regel zusammengeführt, umnext
- und/odermaster
.können Sie überprüfen die Zweige auf http://git.kernel.org/?p=git/git.git;a=summary
trunk
. Sie sind sehr ähnlich, aber mit git (und alle anderen verteilten vcs) es gibt vielemaster
Zweige (jeder geklonte repository hat), so dass die Baum-Metapher macht nicht viel Sinn mehr machtAndere Leute haben sehr gute Beispiele dafür, keine änderungen direkt in
master
, und ich mit Ihnen einverstanden. Jedoch immer befürworten workflows wie dies manchmal führt die Menschen neue git zu glauben, es ist unnötig Komplex, so dass ich wollte einen Kontrapunkt.Wenn Sie einer person oder einem sehr kleinen team und Ihre Entwicklung ist sehr linear, d.h. man arbeitet selten auf mehr als eine Sache zu einer Zeit, und jedes Merkmal ist in der Regel abgeschlossen, bevor die nächste, es ist wirklich kaum zu nicht von nutzen, um nicht direkt aus
master
. Es ist sehr einfach, gehen Sie zurück und fügen Sie einen Zweig an jedem Punkt sollte die Notwendigkeit entstehen. Ich empfehle, die Kenntnis von der feature-branch-workflow, aber wenn Sie fühlen sich in Ihrem Fall ist es nur das hinzufügen zusätzlicher Schritte, ohne den Kauf Ihnen nichts, ich verspreche, ich werde nicht sagen, der git Polizei.Die eine Sache, die Sie benötigen, zu prüfen, mit einem DVCS (Distributed Version Control System) wie Git oder Mercurial ist die "Veröffentlichung" - workflow (orthogonal zu der Verzweigung workflow).
Wenn Sie nur die Zweige, Sie werden sich Fragen, was Aufwand bei der Entwicklung, die Sie darstellen.
Wenn
master
darstellen soll stabil-code, wie knittl details in seine Antwort, dann ja, müssen Sie verzweigen/Zusammenführen, ummaster
.Aber wenn Sie können Klon/push/pull (also veröffentlichen zu verschiedene repos, die verschiedene Zwecke in sich selbst), dann '
master
' spielen Sie eine andere Rolle aus repo-repo.master
in der Regel aus den meisten stabilen code.master
, und einige hotfix-Wartung Niederlassung für dringende Korrekturen.master
Zweig, umgeschrieben von push-zu schieben, nur um einige statische code-Analyse durch einen Haken die Monitore nur gesagtmaster
Zweig für das test-repo.Wenn dabei verpflichtet, die auf beiden Seiten-das heißt, auf Ihrem lokalen repository und upstream-z.B. von anderen team-Mitgliedern-es kann passieren, dass begeht Konflikt. Das bedeutet, dass Dateien und in bestimmten Zeilen wurden bearbeitet, von beiden. In diesem Fall einige manuelle Zusammenführen der Handhabung notwendig ist.
Den
master
Filiale ist eine örtliche Niederlassung vertreten upstream, wenn Sie keinen Zugriff auf upstream (den mobilen Einsatz oder Netzausfall). Es ist viel einfacher Zusammenführen auflösen, und andere Sachen, wenn mit einer lokalen Niederlassung-Sie repräsentieren die upstream-änderungen.master
und etwas anderes. Aber Wilburt exclicitly gefragt, warum mit einemmaster
die wird überhaupt nicht verändert, sondern nur für die Verschmelzung. Als ich erfuhr, Git mir wurde gesagt, zu verlassenmaster
unberührt und es klappte auch ganz gut. Mit mehr Erfahrung, z.B. in der Zusammenführung kann man sparen, das Teil.Nicht sicher, ob mein Verständnis richtig ist, ich bin neu in git.
Ich denke, es macht das Leben einfacher, wenn Sie haben mehrere Funktionen.Lassen Sie uns sagen, Sie haben ein Projekt, und die Arbeit, die auf Funktion A, dann später implementieren Sie verfügen über B.
Nun kann es passieren, dass Sie entscheiden, dass die gesamte Funktion Ein war ein Fehler, und Sie möchten, um eine version Ihres Projekts mit nur B, aber ohne A.
Wenn alles auf master, diese Aufgabe ist heikel.
Wenn jedes feature ist auf seine eigene Zweigstelle, dann ist diese Aufgabe leicht:
Nehmen Sie die alte master-version (ohne A und ohne B).
Sie merge branch B.
Getan.