Github - Eine Anfängerfrage

Gast #5429682
Lesenswert?

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
Gast #5429752
Lesenswert?

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
#5429803
Lesenswert?

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).
Gast #5429812
Lesenswert?

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
Gast #5444169
Lesenswert?

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
#5444369
Lesenswert?

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]).
Gast #5446743
Lesenswert?

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
#5446763
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren