- Ein Benutzer namens alice hat ein Repository namens tasks, nennen wir es alice/repo
- Ein Benutzer namens bob erstellt einen Fork daraus, nennen wir es bob/repo
- Ein Benutzer namens mallory erstellt ebenfalls einen Fork daraus, nennen wir es mallory/repo
Nun passiert folgendes:
- mallory nimmt eine Änderung am Fork vor (Datei: tasks.txt) und pusht diese auf sein origin unter mallory/repo.
- bob nimmt ebenfalls eine Änderung an seinem Fork vor (Datei: tasks.txt), welche er auf sein origin unter bob/repo pusht.
- mallory erstellt einen Pull Request von mallory/repo auf alice/repo, welcher von alice aus inhaltlichen Gründen abgeleht wird.
- bob erstellt einen Pull Request von bob/repo auf alice/repo, welcher von alice angenommen wird.
Code: Alles auswählen
$ git remote add upstream https://my-git-server.com/alice/repo
$ git fetch upstream
$ git rebase upstream/master
Dadurch entsteht ein Konflikt in der Datei tasks.txt. mallory löst diesen durch die Übernahme von bobs Änderungen auf. Weiter geht es folgendermassen:
Code: Alles auswählen
$ git add tasks.txt
$ git rebase --continue
$ git commit -m 'resolved merge conflict'
$ git push origin
Code: Alles auswählen
$ git add tasks.txt
$ git commit -m 'resolved merge conflict'
$ git push origin
Nun meine Frage: Geht das nicht einfacher? Der gleiche Konflikt muss bei diesem Workflow zweimal aufgelöst werden.