it-swarm.com.de

Warum würden Sie zusammengeführte Änderungen nicht sofort festschreiben?

Mein Büro verwendet Git und SourceTree für unsere Versionskontrolle. Dies geschah, weil es bei meinem Beitritt keine Versionskontrolle gab und SourceTree das einzige System war, das ich jemals verwendet hatte. Ich bin keineswegs ein Experte, aber ich bin der erfahrenste meiner Mitarbeiter. Daher bin ich der De-facto-Experte, der dafür verantwortlich ist, dass jeder lehrt, Git richtig zu verwenden und etwaige Fehler zu beheben.

Ich erstelle ein Tutorial-Dokument, das Git und SourceTree durchläuft und jeden Schritt des Prozesses erklärt. Im Pull-Prozess können Sie im SourceTree-Dialogfeld die Option "Zusammengeführte Änderungen sofort übernehmen" auswählen. Ich verstehe, was dies bewirkt und warum es nützlich ist. Was ich nicht verstehe ist, warum jemand nicht diese Funktion nutzen möchte.

Könnte jemand erklären, warum Sie niemals möchten, dass Ihre zusammengeführten Änderungen automatisch festgeschrieben werden? Ich versuche, die Argumentation zu verstehen, damit ich die Nützlichkeit der Funktion besser erklären und eine Vorstellung davon bekommen kann, auf welche Fallstricke in Zukunft zu achten ist.

Bearbeiten: Ich glaube nicht, dass meine Frage ein Duplikat der verknüpften Frage ist. In der verknüpften Frage wird allgemein gefragt, wie oft ein Commit durchgeführt werden soll. Ich frage mich, warum man sich dafür entscheidet, eine bestimmte Funktion im Zusammenhang mit dem Festschreiben von Zusammenführungen nicht zu verwenden SourceTree.

17
David K

Ich möchte diese Funktion nicht verwenden.

Die Tatsache, dass es keine Konflikte gab, bedeutet so ziemlich, dass die Änderungen, die in meinem Zweig zusammengeführt werden, ungefähr nicht in den gleichen Codezeilen enthalten sind wie die, die ich vorgenommen habe. Dies bedeutet nicht, dass diese Änderungen mit meinen Änderungen kompatibel sind. Dies bedeutet nicht, dass der Code kompiliert wird oder dass der Code funktioniert oder dass die Tests bestanden werden.

Mit anderen Worten, wenn ich diese Option verwende, erhalte ich möglicherweise ein falsches Festschreiben von Code, das sich möglicherweise nicht in einem guten Zustand befindet und für dessen Behebung ein neues Festschreiben erforderlich ist. Da ich diese Arbeit sowieso mache und ich dieses falsche Commit niemals stromaufwärts schieben sollte, auch nicht aus Versehen (Meine Güte, verbietet, kann jemand dann das in einen anderen Zweig verschmelzen!), Sehe ich keinen Grund um dieses Commit in erster Linie zu erstellen.

27
user285148

Nach einer Zusammenführung können sich die Dateien im lokalen Repo ändern. Diese Änderungen werden nicht automatisch in die lokale Datei übernommen, es sei denn, Sie haben "Zusammengeführte Änderungen sofort übernehmen" festgelegt.

Wenn Sie diese Option nicht festlegen, werden die Dateien in SourceTree als nicht festgeschriebene Änderungen angezeigt.

Dies liegt daran, dass Git selbst keine Festschreibung vornimmt, es sei denn, Sie weisen dies ausdrücklich an, und SourceTree ist eine Git-GUI. Die Option "Änderungen sofort zusammenführen" Option ist weniger eine Option als vielmehr eine Befehlsverknüpfung.

Der Grund für nicht, diese Funktion verwenden zu wollen, liegt auf der Hand: Sie möchten das Commit manuell oder gar nicht ausführen.

Angenommen, Sie ziehen den Master in Ihren Feature-Zweig. Ein Mitarbeiter arbeitet an einem anderen Feature-Zweig. Dieser Mitarbeiter hat eine Geschichte, in der er Dinge zerbrochen hat. Die Zusammenführung enthält Änderungen am gemeinsamen Code, die von diesem Mitarbeiter vorgenommen wurden. Sie - also zusammen mit dem Rest des Teams - nicht führen zusammengeführte Änderungen fest, bis Sie sicher sind, dass von diesem Mitarbeiter keine Änderungen vorgenommen wurden, die sich auf Ihre Arbeit auswirken.

Nur weil es theoretisch keinen guten Grund gibt, diese Funktion nicht zu verwenden, kann es in der Realität eine Reihe guter Gründe geben. In Bezug auf Ihr Tutorial würde ich nur sagen, dass "99 mal von 100, dies ist die Option, die Sie verwenden möchten". Ich glaube nicht, dass Sie wirklich ins Detail gehen müssen, wenn Sie es nicht verwenden, besonders wenn die anderen neu in der Versionskontrolle sind. Das hängt alles davon ab, wie ausführlich das Tutorial sein soll.

2

Wenn Sie einen Post-Commit-Hook verwenden, um Ihre Commits automatisch zu pushen (wie in https://stackoverflow.com/a/7925891/6781678 ), benötigen Sie möglicherweise diese Option, um zu vermeiden, dass ein Commit von zweifelhafter Qualität durchgeführt wird.

Ich würde es auch nie benutzen.

2
Philippe