Es gibt tatsächlich eine dritte Möglichkeit - und höchstwahrscheinlich viele andere, da GIT eher eine Implementierung eines SCM-Frameworks als eine Implementierung einer SCM-Methodik ist. Diese dritte Möglichkeit basiert auf rebase
.
Der rebase
GIT-Unterbefehl nimmt eine Reihe von Festschreibungen vor (normalerweise von Ihrem Verzweigungspunkt bis zur Spitze Ihres Zweigthemas topic
) und spielt sie an einer anderen Stelle ab (normalerweise an der Spitze Ihres Integrationszweigs, z master
. B. ). Der rebase
Unterbefehl erzeugt neue Commits, wodurch die Möglichkeit besteht, Commits in einer Form neu anzuordnen, die leichter zu überprüfen ist. Dies führt zu einer neuen Reihe von Festschreibungen, ähnlich der früheren topic
, die jedoch an der Spitze des Integrationszweigs verankert zu sein scheinen. Dieser neue Zweig wird weiterhin topic
von GIT aufgerufen , sodass der alte Verweis verworfen wird. Ich beschrifte informell topic-0
den ursprünglichen Zustand Ihrer Niederlassung topic-1
und so weiter die verschiedenen Umgestaltungen.
Hier ist mein Vorschlag für Ihre topic
Branche:
(Optionaler Schritt) Sie legen Ihren Zweig interaktiv topic
an seinem Verzweigungspunkt neu fest (siehe --fixup
Option für commit
und die -i
und --autosquash
Optionen für rebase
), wodurch Sie die Möglichkeit haben, Ihre Commits auf eine Weise umzuschreiben, die leichter zu überprüfen ist. Dies führt zu einer Verzweigung topic-1
.
Sie bauen Ihren Zweig "Topic" am Anfang Ihres Integrationszweigs neu auf, ähneln einer Zusammenführung, verschmutzen jedoch den Verlauf nicht mit einer Zusammenführung, die lediglich ein Software-Engineering-Artefakt ist. Dies führt zu einer Verzweigung topic-2
.
Senden Sie es topic-2
an einen Teamkollegen, der es gegen die Spitze von überprüft master
.
Wenn topic-2
es in Ordnung ist, dann füge es zum Master zusammen.
HINWEIS Die Verzweigungen - wobei Verzweigung sich auf den Festschreibungsbaum bezieht - werden von GIT alle gleich aufgerufen, sodass am Ende des Prozesses nur die Verzweigung topic-2
einen Namen in GIT hat.
Vorteile:
- Kein veralteter Code in Überprüfung.
- Keine fälschlichen "Foreign Merges" -Rezensionen (das Phänomen, das Sie in 1. beschrieben haben).
- Gelegenheit, Commits sauber umzuschreiben.
Nachteile:
- Anstelle eines Zweiges
topic-0
, gibt es drei Zweige Artefakte topic-0
, topic-1
und topic-2
die erzeugt werden , in den Baum zu begehen. (Obwohl zu jeder Zeit nur einer von ihnen einen Namen in GIT hat.)
In Ihrem ersten Szenario «wenn jemand etwas zwischen" 1 "zusammengeführt hat. und "2." bezieht sich auf die Zeitspanne zwischen der Erstellung des Verzweigungspunkts und dem Zeitpunkt, zu dem Sie sich für eine Zusammenführung entscheiden. In diesem Szenario «wenn jemand etwas zwischen" 1. " und "2." bezieht sich auf die Zeitspanne zwischen der Basiswiederherstellung und der Zusammenführung, die normalerweise sehr kurz ist. So können Sie in dem von mir master
bereitgestellten Szenario den Zweig für die Zeit der Zusammenführung «sperren», ohne Ihren Arbeitsablauf wesentlich zu stören, während dies im ersten Szenario unpraktisch ist.
Wenn Sie systematische Codeüberprüfungen durchführen, ist es wahrscheinlich eine gute Idee, die Commits in angemessener Weise neu anzuordnen (optionaler Schritt).
Das Verwalten der Artefakte zwischen Verzweigungen ist nur dann schwierig, wenn Sie sie für mehrere Repositorys freigeben.