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


16

Mein Büro verwendet Git und SourceTree für unsere Versionskontrolle. Dies geschah, weil bei meinem Beitritt keine Versionskontrolle stattfand und SourceTree das einzige System war, das ich jemals verwendet hatte. Ich bin in keiner Weise ein Experte, aber ich bin der erfahrenste unter meinen Mitarbeitern. Ich bin der De-facto-Experte, der dafür verantwortlich ist, dass jeder Git richtig einsetzt und alle Fehler behebt, die er macht.

Ich mache 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 das macht und warum es nützlich ist. Was ich nicht verstehe ist , warum jemand würde nicht diese Funktion verwenden möchten.

Könnte jemand erklären, warum Sie niemals möchten, dass Ihre zusammengeführten Änderungen automatisch übernommen werden? Ich versuche, die Argumentation zu verstehen, damit ich die Nützlichkeit des Features 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. Die damit verbundene Frage lautet im Großen und Ganzen, wie oft ein Commit durchgeführt werden soll. Ich frage mich, warum man eine bestimmte Funktion im Zusammenhang mit dem Festschreiben von Zusammenführungen in SourceTree nicht verwenden möchte.



1
Möchtest du gute Gründe? Weil ich eine Vielzahl von Gründen angeben kann, um die Überprüfung von Code zu verzögern, die ich in der Öffentlichkeit gehört habe, aber nur wenige sind gute Gründe.
Whatsisname

Der einzige Grund, an den ich denken kann, ist, wenn eine Zusammenführung aufgrund von Zusammenführungskonflikten fehlschlägt. In diesem Fall wird SourceTree jedoch kein Commit ausführen.
Robert Harvey

Nebenbei bemerkt: Warum schreibst du dein eigenes Tutorial? bitbucket hat schon ein tolles Tutorial. confluence.atlassian.com/bitbucket/…
winkbrace

@winkbrace Bitbucket wird nicht verwendet. Wir halten alles in einem lokalen Netzwerk. Ich beziehe mich zwar auf Atlassians großartiges Tutorial , aber ich wollte etwas prägnanteres, das ich Leuten geben kann, die mit Git und der Versionskontrolle noch nichts zu tun haben . Es handelt sich eher um eine Einführung und ein Verfahren "So und warum wird / gedrückt / gezogen / usw.", damit die Leute sofort loslegen können.
David K

Antworten:


26

Ich würde diese Funktion nicht nutzen wollen.

Die Tatsache, dass es keine Konflikte gab, bedeutet, dass die Änderungen, die in meinem Zweig zusammengeführt werden, ungefähr nicht in den gleichen Codezeilen 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, bekomme ich möglicherweise ein falsches Commit von Code, das sich möglicherweise nicht in einem guten Zustand befindet und für dessen Behebung ein neues Commit erforderlich ist. Da ich diese Arbeit sowieso mache und dieses falsche Commit niemals, auch nicht aus Versehen , in den Vordergrund stellen sollte (Meine Güte, jemand kann das dann in einen anderen Zweig einbinden !), Sehe ich keinen Grund, dieses Commit im ersten Teil zu erstellen Platz.


Vermutlich erstellen Sie Feature-Zweige und verschmelzen nicht jede kleine Änderung mit dem Hauptzweig. Es ist unwahrscheinlich, dass Zusammenführungen Konflikte in einem Feature-Zweig verursachen, es sei denn, mehrere Personen arbeiten in derselben Klasse in demselben Feature-Zweig.
Robert Harvey

4
@RobertHarvey Ja, aber ich füge den Hauptzweig vermutlich häufig in meinen Zweig ein. Es gibt eine versteckte Annahme in Ihrem Kommentar, dass verschiedene Funktionen natürlich verschiedene Klassen / Module betreffen, aber nicht jeder hat Glück. Durch (Un-) Glück haben Sie irgendwo eine Gottklasse, die jeder, der etwas tut, anfassen muss, und Sie können nicht viel dagegen tun. Es gibt auch übergreifende Funktionen (Upgrade einer Bibliothek, aufgrund derer eine von 10 Codezeilen geändert werden muss ...). Ich kenne das Argument "Versuche, nicht dorthin zu gelangen", aber was ist, wenn du bereits da bist? Sicher ist sicher.

2

Nach einer Zusammenführung können sich Änderungen an Dateien im lokalen Repository ergeben. Diese Änderungen werden nicht automatisch für das lokale System ü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.

Das liegt daran, dass Git selbst keine Commits ausführt, es sei denn, Sie teilen dies ausdrücklich mit, und SourceTree ist eine Git-GUI. Die Option "Zusammengeführte Änderungen sofort übernehmen" ist weniger eine Option als vielmehr eine Befehlsverknüpfung.

Der Grund, warum Sie diese Funktion nicht verwenden möchten, liegt auf der Hand: Sie möchten das Festschreiben manuell oder gar nicht ausführen.

Nehmen wir an, Sie ziehen Master in Ihren Feature-Zweig. Ein Mitarbeiter arbeitet an einem anderen Feature-Zweig. Dieser Mitarbeiter hat eine Geschichte, in der er Dinge kaputt gemacht hat. Die Zusammenführung enthält Änderungen am gemeinsamen Code, die von diesem Mitarbeiter vorgenommen wurden. Sie - zusammen mit dem Rest des Teams - werden keine zusammengeführten Änderungen vornehmen, 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 von guten Gründen geben. In Bezug auf Ihr Tutorial würde ich nur sagen, dass "99 mal von 100, das ist die Option, die Sie verwenden möchten". Ich denke nicht, dass Sie wirklich ins Detail gehen müssen, um es nicht zu verwenden, besonders wenn die anderen neu in der Versionskontrolle sind. Das hängt alles davon ab, wie detailliert Sie das Tutorial erstellen möchten.


2

Wenn Sie einen Beitrag verwenden commit zum automatischen Commits schieben (wie in /programming//a/7925891/6781678 ), könnten Sie müssen diese Option zu vermeiden , einige begehen von zweifelhafter Qualität drängen.

Ich würde auch nie verwenden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.