mikrocontroller.net

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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Ivo -. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ivo -. (Gast)
Datum:

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

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Ivo -. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Axel S. (a-za-z0-9)
Datum:

Bewertung
2 lesenswert
nicht 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).

Autor: Ivo -. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: derElf (Gast)
Datum:

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

Autor: Ivo -. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven B. (scummos)
Datum:

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

Autor: Ivo -. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht 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]).

Autor: Ivo -. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Bernd K. (prof7bit)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Sven B. (scummos)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ivo -. (Gast)
Datum:

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

Ivo

Autor: Sven B. (scummos)
Datum:

Bewertung
1 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.