Mergen auf neuen Masterportal Version¶
1. Abrufen der gewünschten Version aus Bitbucket:
git fetch https://bitbucket.org/geowerkstatt-hamburg/masterportal tag v2.5.0 # 1a. ENTWEDER feste version abrufen git fetch https://bitbucket.org/geowerkstatt-hamburg/masterportal dev:upstream # 1b. ODER aktuelle dev-version in branch "upstream" abrufen
2. Auf dev-Branch wechseln
git checkout dev
3. Prüfen, dass keine offenen Änderungen mehr vorhanden sind
git status
4. Neues Branch anlegen
git branch dev2.5.0
5. Auf merge-Branch wechseln
git checkout dev2.5.0
6. Merge
git merge v2.5.0 # ENTWEDER 4a. wenn 1a gewählt wurde (Versionsupgrade) git merge upstream # ODER 4b. wenn 1b gewählt wurde (aktuelle dev-Version)
7. Merge-Konflikte beseitigen falls nötig (Dateien bearbeiten, anschließend mit "git add" hinzufügen, nicht gewünschte dateien mit "git rm" löschen, am Ende "git commit")
Nochmal kontrollieren, dass keine Merge-Konflikte vorhanden sind (nach "<<<" suchen)
8. Push
git push
Tipps und Tricks zum Mergen¶
webpack.config.js: Da wir diese Datei selbst pflegen, wird es keine Merge-Konflikte geben. Falls es aber zu seltsamen Fehlermeldungen kommt, kann ein Blick in die "originale" Webpack-Config (im LGV-Repo unter devtools) helfen. Vermutlich wurde dort etwas geändert - z.B. ein alias hinzugefügt oder ein Pfad verändert.
package.json: beim interaktiven Mergen in VS Code beide Änderungen übernehmen, dann bei doppelten Paketen die Zeile mit der älteren Version löschen
Achtung: Pakete dürfen auch nicht doppelt in "dependencies" und "devDependencies" auftauchen!
package.lock.json: einfach löschen und einmal "npm install" laufen lassen, dann wird die datei korrekt neu angelegt (aber vorher package.json bereinigen, siehe oben)
in git status als "deleted by them" oder "deleted by us" markierte Dateien können in der Regel mit "git rm ..." gelöscht werden
in anderen Dateien, die wir nicht verändert haben, sollten die eingehenden Änderungen akzeptiert werden falls unerwartet Merge-Konflikte auftauchen
Rückgängig machen¶
Wenn garnichts hilft:
git reset --hard 1234abcd (durch die richtige Commit-ID ersetzen) git push --force (nur nötig falls schon Änderungen gepusht wurden)
Dadurch wird der dev branch erst lokal und dann im gitlab auf den angegebenen Commit zurückgesetzt.
Alle späteren Änderungen sind weg!
Alles vergleichen¶
Einen Überblick über alle Änderungen kann man leicht wie folgt erhalten. Wichtig: Vorher prüfen dass alle lokalen Änderungen commited und gepusht sind! Falls das Repo beim reset/checkout versehentlich beschädigt wird, kann es dann einfach neu geklont werden.
git status # prüfen dass es keine lokalen Änderungen gibt git checkout dev git checkout -b vergleich # branch 'vergleich' anlegen als kopie von 'dev' git reset upstream # git index wird auf den stand von 'upstream' gesetzt, dateien bleiben wie sie in 'dev' sind git status # zeigt nun alle änderungen zwischen 'upstream' und 'dev' git reset dev # index wieder auf den dev-branch setzen git checkout dev # wieder zurück zum dev-branch