Wie arbeitet man mit git bei einem Open-Source-Projekt mit? Welche Branches braucht es, wann wird ein Merge durchgeführt,
und wie entstehen dabei ordentliche Pull-Requests? Vor allem als Merkzettel für mich selbst habe ich mein Vorgehen dazu aufgeschrieben.
Das Projekt, bei dem mitgearbeitet wird, soll https://github.com/example/coole-software sein. Statt github.com kann
es auch ein beliebiger anderer Dienst sein.
Als ersten Schritt erstelle ich mir davon einen Fork. Der heißt dann https://github.com/jze/coole-software.
Den Code checke ich lokale aus und füge das Original als weitere Quelle hinzu:
git clone git@github.com:jze/coole-software.git
cd coole-software
git remote add upstream https://github.com/example/coole-software
Jede Änderung wird in einem eigenen Feature-Branch entwickelt. So ist sichergestellt, dass nur die zu diesem
Feature gehörenden Änderungen auch im Pull Request auftauchen. Wenn ich z.B. eine Unterstützung für Docker einbauen
will, würde ich mir so einen Feature-Branch anlegen:
git checkout main
git branch docker
git checkout docker
Würde ich auch noch an Übersetzungen arbeiten, würde das in einem weiteren Feature-Branch passieren:
git checkout main
git branch i18n
git checkout i18n
Beim git push
bekomme ich schon angeboten, einen Pull Request zu erstellen.
Da ich selbst auch mit der Software arbeiten will, stelle ich mir alle meine Änderungen in einem eigenen Branch zusammen.
Den lege ich einmalig an:
git checkout main
git branch dev
Jede Arbeit an einem Feature-Branch kopiere ich in den dev
-Branch, für das Beispiel also:
git checkout dev
git merge docker
git merge i18n
Jetzt habe ich die Version inklusive aller Ergänzungen von mir.
Hin und wieder sollte ich Änderungen vom Originalprojekt holen:
git checkout main
git pull upstream main
git checkout dev
git merge main