Übung - Umgang mit “Push Reject”
Wenn mehrere Entwickler am selben Projekt arbeiten, kommt es beim git push
häufig zu der Meldung error: failed to push some refs ...
, dem sogenannten Push Reject.
Das ist nicht schlimm. Es bedeutet lediglich, dass im origin
-Repository Commits gefunden wurden, die lokal noch nicht integriert sind.
Man mit git pull
kann man die Änderungen holen und integrieren.
Oder man kann mit git fetch
die Änderungen zunächst nur abholen, um sie zu untersuchen, und später zu entscheiden, was man damit machen möchte.
Tipps
git push
: Überträgt Commits zumorigin
.git fetch
: Holt Commit, ändert aber Workspace und lokalen Branch nichtgit pull
: Holt und integriert Commits.git log A..B
zeigt “was B gemacht hat”.
Oder etwas genauer: Jenes Commits aus der Historie vonB
, die noch nicht inA
enthalten sind.git diff A B
zeigt die Unterschiede zwischen A und B
(symmetrisches Diff)git diff A...B
zeigt die Änderungen der Seite B.
Oder etwas genauer: Das Diff zwischen dem letzen gemeinsamen Vorgänger zu B.
(asymmetrisches Diff)
Setup
- Du arbeitest an einem Projekt
apollo
, das von Deiner Kollegin Anja erstellt wurde. - Du sollst die Datei
frontend.java
verbessern, während Anja an der Dateibackend.java
weiterarbeitet.
Wenn Anja ihre Änderungen vor Dir hochlädt, wirst Du einen Push Reject erfahren.
Verzeichnisse
./
Haupverzeichnis für diese Übungblessed-apollo.git/
Das geteilte (blessed) Repository liegt hier.anjas-apollo/
Hier arbeitet Anja.my-apollo/
Du arbeitest hier.
$ cd my-apollo
Schritt 1 - Lokal Commit(s) erstellen
Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-push-rejected/my-apollo
.
Bearbeite die Datei frontend.java
und erstelle (mindestens) ein Commit mit den Änderungen. Überprüfe danach mit git status
, ob der Workspace sauber ist.
Schritt 2 - Push versuchen
Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-push-rejected/my-apollo
.
Versuche jetzt Deine Änderungen zu pushen.
Schritt 3 - (optional) Problem analysieren
Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-push-rejected/my-apollo
.
Hole zunächt die Änderungen, ohne zu integrieren (fetch
), und lasse Dir die Änderungen von Anja zeigen.
- Welche Commits hat Anja gemacht (
log
)? - Welche Unterschiede gibt es zweichen deiner und Anjas Version (symmetrisches
diff
)? - Welche Änderungen hat Anja gemacht (asymmetrisches
diff
)?
Schritt 4 - Fremde Änderungen integrieren
Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-push-rejected/my-apollo
.
Integriere die Änderungen mit Pull und sieh Dir dann den Commit-Graphen an.
Schritt 5 - Erneut pushen
Starte im Verzeichnis git-uebungen/aufgaben/zusammenarbeit-push-rejected/my-apollo
.
my-apollo $ cd ..