Hallo, ich versioniere jetzt schon länger meine Projekte mit Git und komme damit auch relativ gut zurecht. Jetzt wollte ich aber mal mit GitHub anfangen, also das ganze auf einem externen Server. Soweit ja nicht so schwer, aber dennoch habe ich eine Frage: Ich klone das Repo Ich lege einen neuen Branch an Ich mache ein paar Commits Währenddessen legt ein anderer einen weiteren Branch an und uploadet das Wie kann ich jetzt diesen Branch samt aller Commits runterladen, mit fetchmuss ich dann ja noch mergen, um darauf schreiben zu können, darauf habe ich allerdings nicht wirklich Lust. Ich will also quasi das gesamte Repo herunterladen und dabei will ich dann auch auf alle schreibzugriff haben. Geht das, ist das nicht so vorgesehen oder bin zu doof? Vielen Dank im Vorraus, Ivo
Ach ja, und bei pull muss man dann ja wieder einen Branch angeben, also das was ich eigentlich nicht will, oder?
"git pull" ist git fetch + git merge in Einem. Um neue Remote-Branches auch lokal zu haben, kannst du "git checkout foo" benutzen, wobei "foo" der Name des Remote-Branches ist (der volle Name wäre remotes/origin/foo).
Danke schon mal, aber wenn ich die Dokumentation richtig verstanden habe, mergst git pull nur in den aktuellen Branch, wenn ich also noch einen weiteren Branch habe, wird dort nicht gemergt, oder habe ich das falsch verstanden? Ivo
Ivo Z. schrieb: > Währenddessen legt ein anderer einen weiteren Branch an und uploadet das Im Normalfall wird das nicht passieren, weil man nur seltenst ein Repository für Fremde zum Schreiben frei gibt. Der gebräuchliche Weg ist, daß jemand dein Repo cloned, neuen Code eincheckt und dir einen pull-request schickt, damit du den Change aus seinem Repo in deins mergst und damit übernimmst. Das mag auf den ersten Blick ungewöhnlich erscheinen, hat aber den Vorteil, daß Code-Review und Tests nicht übersprungen werden können (es sei denn, du machst das selbst).
Axel S. schrieb: > Ivo Z. schrieb: >> Währenddessen legt ein anderer einen weiteren Branch an und uploadet das > > Im Normalfall wird das nicht passieren, weil man nur seltenst ein > Repository für Fremde zum Schreiben frei gibt. Gut, kluger Gedanke, bin ich selber noch nicht drauf gekommen (also bin ich doch zu doof;-) Dann bleibt dennoch die prinzipielle Frage, wie geht das? Es gibt ja auch durchaus Projekte mit mehreren Entwicklern. Oder gibt es dann trotzdem nur einen mit Schreibzugriff und die anderen Entwickler müssen weiterhin PRs stellen? Ivo
Normalerweise geht man bei Projekten mit mehreren Entwicklern auch über Pull-Requests, weil man dann vorher die Tests und Code-Review macht.
Ich wärme diesen Thread noch mal auf: Ich lege lokal einen neuen Branch an Mache auf dem Branch ein paar Commits Lade den Branch hoch (git push neuerbranch oder?) Merge auf Github die Branches Und wie kriege ich jetzt das Merging und die Löschung des Branches lokal ins Repo? Oder muss ich lokal mergen und dann hochladen? Danke für eure Hilfe, Ivo
Hä? Warum willst du das Merge auf github machen? "git merge foo" und fertig
Also lokal mergen? Über git merge oder einen Pull-Request? Bei git merge und löschen des Branchs wird doch aber das löschen nicht synchronisiert oder habe ich da was nicht verstanden? Ivo
Hä? Was ist denn ein lokaler Pull-Request? Nein, der Branch wird nicht gelöscht wenn du git merge tippst, aber du kannst git branch -D foo benutzen, dann ist er weg.
Statt merge kannst Du auch Deinen lokalen Branch "rebasen". Das zieht quasi die Abzweigstelle nach oben. Jedesmal wenn die Kollegen wieder was nach "master" gepusht haben machst Du in Deinem Branch einen Rebase auf master und danach sieht es wieder so aus als ob Dein Branch auf der Spitze von master aufbaut, also zuerst alle deren Änderungen in deren Reihenfolge und ganz oben drauf dann Deine Änderung relativ zu deren letzten Stand. Rebasen würd ich aber nur mit privaten Branches machen die außer Dir niemand anders trackt, denn jedesmal wenn Du Deinen Branch quasi an der Abzweigstelle herausreißt und oben an der Spitze wieder reinschraubst hast Du die History Deines Branches umgeschrieben (die ganzen neu hinzugekommenen Änderungen im master mussten beim Umstöpseln ja in den Branch eingearbeitet werden so als wären sie schon immer in Deinem Branch dringewesen [denn er baut ja darauf auf]).
Sven B. schrieb: > Hä? Was ist denn ein lokaler Pull-Request? > > Nein, der Branch wird nicht gelöscht wenn du git merge tippst, aber du > kannst git branch -D foo benutzen, dann ist er weg. Sorry, dass ich erst jetzt antworte, bin vorher nicht dazu gekommen. Lokaler PR, das meinte ich nicht, da habe ich mich wohl etwas missverständlich ausgedrückt. Soweit ich das jetzt verstanden habe, macht man in der Gruppe einen PR und alleine git merge, oder? Das einzige was ich dann nicht verstehe, ist wie ich dann das lokale löschen des Branches sysnchronisiere, oder wird der Branch einfach nicht gelöscht und bleibt? Ivo
Ivo Z. schrieb: > Das einzige was ich dann nicht verstehe, ist wie ich dann das lokale > löschen des Branches sysnchronisiere, oder wird der Branch einfach nicht > gelöscht und bleibt? > > Ivo Wenn der Branch zurück in den Master gemergt wurde dann sieht man in der Historie wie es verzweigt und weiter oben wieder zusammenläuft. Du kannst dann zwar das Schildchen an der Spitze des Branches wegmachen so daß er keinen Namen mehr hat aber der Verlauf (Verzweigung, Commits, Zusammenführung) bleibt natürlich stehen, er gehört ja jetzt zur offiziellen Historie des master-Branches und Deine Commits gehen so wie sie sind in die Geschichte ein.
Ein Branch ist nur ein Name für einen Commit, sonst nichts. Das ganze Konzept "Pull Request" ist ein Meta-Begrif. Es entsteht durch Konventionen, wie git in bestimmten Umfeldern benutzt. Git selbst kennt so etwas nicht.
Also kann man den gemergten Branch einfach stehen lassen und muss nicht gelöscht werden? Ivo
Kann man, hat eigentlich keinen Effekt außer dass halt der Name in der List der Branches steht, was schon irgendwann störend sein kann wenn es zu viele werden.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.