Forum: PC Hard- und Software Github - Eine Anfängerfrage


von Ivo -. (Gast)


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

von Ivo -. (Gast)


Lesenswert?

Ach ja, und bei pull muss man dann ja wieder einen Branch angeben, also 
das was ich eigentlich nicht will, oder?

von Sven B. (scummos)


Lesenswert?

"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).

von Ivo -. (Gast)


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

von Axel S. (a-za-z0-9)


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).

von Ivo -. (Gast)


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

von derElf (Gast)


Lesenswert?

Normalerweise geht man bei Projekten mit mehreren Entwicklern auch über 
Pull-Requests, weil man dann vorher die Tests und Code-Review macht.

von Ivo -. (Gast)


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

von Sven B. (scummos)


Lesenswert?

Hä? Warum willst du das Merge auf github machen? "git merge foo" und 
fertig

von Ivo -. (Gast)


Lesenswert?

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

von Sven B. (scummos)


Lesenswert?

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.

von Bernd K. (prof7bit)


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]).

von Ivo -. (Gast)


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

von Bernd K. (prof7bit)


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.

von Sven B. (scummos)


Lesenswert?

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.

von Ivo -. (Gast)


Lesenswert?

Also kann man den gemergten Branch einfach stehen lassen und muss nicht 
gelöscht werden?

Ivo

von Sven B. (scummos)


Lesenswert?

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
Noch kein Account? Hier anmelden.