Github bietet jetzt eine Fork Queue an, in der man bequem auswählen kann, welche Commits auf den ausgewählten Integrationsbranch geschoben werden sollen. Hier lauert eine Falle: Diese Funktionalität ist ein Interface zum git cherrypick, nicht zum git merge. Im Ergebnis wird der gewählte Commit (und zwar ausschließlich der gewählte Commit) auf den Integrationsbranch geschoben; es wird nicht gemerged.
Wird diese Technik angewendet, um einen eigenen fork mit der letzten Version vom "upstream" zu aktualisieren, entstehen parallele Branches, die u.U. nicht mehr automatisch zu mergen sind.
Ein einfaches Vorgehen, einen "fremden" Github-Branch zu integrieren, sieht wie folgt aus:
Vorbereitung:
1. git config remote.upstream_repo.url = (public) URL des fremden Respository
2. git config remote.upstream_repo.fetch = +refs/heads/*:refs/remotes/upstream_repo/*
3. git config branch.upstream.remote = upstream_repo
4. git config branch.upstream.merge = refs/heads/master
Fremden Branch laden:
1. git pull upstream
Merge:
1. git checkout my_integration_branch
2. git merge upstream
3. eventuelle Konflikte auflösen, ggf. einchecken
4. git push origin my_integration_branch
Mit dem letzten Kommando wird der integrierte Branch auf die Quelle des eigenen Repositories publiziert -- bei Github sollte das immer das eigene Github Repository sein. Pronzipiell läßt sich das aber auf beliebige Git-Repositories anwenden.