Ich arbeite derzeit für eine Firma, die VSTS für die Verwaltung von Git-Code verwendet. Die von Microsoft empfohlene Methode zum Zusammenführen eines Zweigs besteht darin, einen "Squash-Merge" durchzuführen. Dies bedeutet, dass alle Festschreibungen für diesen Zweig zu einer neuen Festschreibung zusammengefasst werden, in der alle Änderungen enthalten sind.
Das Problem ist, was passiert, wenn ich einige Änderungen in einer Verzweigung für ein Backlog-Element vornehme und dann sofort Änderungen in einer anderen Verzweigung für ein anderes Backlog-Element vornehmen möchte. Diese Änderungen hängen von den Änderungen der ersten Verzweigung ab?
Ich kann eine Verzweigung für dieses Rückstandselement erstellen und auf der ersten Verzweigung aufbauen. So weit, ist es gut. Wenn es jedoch an der Zeit ist, eine Pull-Anforderung für den zweiten Zweig zu erstellen, wurde der erste Zweig bereits in Master zusammengeführt. Da dies als Squash-Zusammenführung erfolgt, weist git auf eine Reihe von Konflikten hin. Dies liegt daran, dass git die ursprünglichen Commits, auf denen der zweite Zweig basiert, nicht sieht, sondern nur das Zusammenführen eines großen Kürbisses. Um den zweiten Zweig zum Master zusammenzuführen, wird versucht, alle Commits des ersten Zweigs erneut abzuspielen oben auf der Squash-Fusion, was zu vielen Konflikten führt.
Meine Frage ist also, ob es eine Möglichkeit gibt, dies zu umgehen (abgesehen davon, dass ich nie einen Feature-Zweig von einem anderen abstützt, was meinen Workflow einschränkt) oder ob das Zusammenführen von Squash nur den Zusammenführungsalgorithmus von Git unterbricht.
feature1
auf den Master durchführen und später einen Merge durchführen möchtenfeature2
. In diesem Fall würde der erste Ansatz nicht zu Konflikten führen, wenn git versucht, diefeature1
Commits erneut auf das gequetschte Commit anzuwenden , während git mit dem zweiten Ansatz feststellen könnte, dass diese Commits nicht zusammengeführt werden müssen.