Leider ist dies nicht so einfach wie die vorherige Antwort schlägt vor, weil git pull
nur Änderungen in den aktuellen Zweig integriert.
Das erste, was Ihr Bot tun muss, ist git fetch
- und während es wahr ist, dass ein git pull
würde (Standardeinstellung) führen dies geschehen kann, empfehle ich die fetch
direkt potentiell verwirrenden Nebenwirkungen zu vermeiden tun.
Wenn Sie eine fetch
tun, hängt das, was Sie erhalten, von der remote.central.fetch
Konfigurationsoption ab (für eine Fernbedienung namens central
, wie Sie angegeben haben). Die Standardeinstellung nach einem clone
(vorausgesetzt, Sie nicht so etwas wie mirror
, single-branch
oder depth
ohne no-single-branch
zum clone
Befehl ... angegeben haben), um die Geschichten aller Branchen holen würde, und Remote-Zweig Refs aktualisieren würde (zB refs/origin/central/master
, um anzuzeigen, der Zustand der master
Niederlassung auf central
).
Wenn Sie dabei bleiben, sind Ihre lokalen Refs immer noch nicht mit der Fernbedienung synchronisiert. Ob das ein Problem ist, hängt davon ab, was dein Bot macht. Es gibt viele Permutationen hier ... Könnte dein Bot lokale Änderungen vor der fetch
haben, und wenn ja, was würdest du damit machen wollen? Wird Ihr Bot Änderungen nach der fetch
vornehmen, und wird er schließlich diese Änderungen vornehmen? Plus eine beliebige Anzahl von "wenn Sie wollen, dass die Geschichte wie X aussieht, machen Sie Y" Überlegungen.
Ich werde sagen, dass, wenn Ihre Absicht ist es, alle lokalen Niederlassungen zu bewegen, um den entsprechenden Zweig zu reflektieren central
gibt zwei grundlegende Ansätze sind:
1) die Refspec in der Default-Einstellung verlassen, dann über Niederlassungen iterieren Aktualisiere den lokalen Verweis, um ihn mit der Fernbedienung abzugleichen. Dies gibt Ihnen die Möglichkeit, mit lokalen Änderungen fertig zu werden (indem Sie sie entweder in die Zweighistorie zusammenführen oder neu auffächern), aber es erfordert eine Menge Scripting.
2) Ändern Sie die Refspec so, als ob sie auf einem Spiegelklon aussehen würde. (Ich habe den Eindruck, dass Sie damit konfrontiert sind, wie Sie die Frage formuliert haben.) Dies ist vielleicht riskant, weil lokale Änderungen einfach durcheinander gebracht werden könnten, und Sie müssten dennoch alle Zweige identifizieren, die auf central
gelöscht wurden.Das Setup wäre hier so etwas wie
git config remote.central.fetch +refs/*:refs/*