MetaEditor Hilfe → Projekte und MQL5 Algo Forge → Änderungen zusammenführen

Kollaboration und Zusammenführung von Änderungen in MQL5 Algo Forge

Projekte forken #

Durch das Forken wird unter Ihrem eigenen Konto eine persönliche Version des Repositories einer anderen Person erstellt. Dadurch erhalten Sie einen sicheren, unabhängigen Bereich, in dem Sie experimentieren und Änderungen vornehmen können, ohne die Codebasis des ursprünglichen Erstellers zu beeinträchtigen.

Auf der MQL5 Algo Forge-Website können Sie öffentliche Projekte erkunden, die von MetaTrader 5-Nutzern aus aller Welt erstellt wurden. Wenn Sie ein Projekt finden, das Ihnen gefällt, klicken Sie oben rechts auf „Fork“.

Forken der Projekt-Webseite

Beim Forken können Sie einen anderen Namen eingeben, auswählen, welche Zweige kopiert werden sollen, und die Beschreibung bearbeiten. Klicken Sie auf „Fork repository“.

Webseite mit Fork-Optionen

Das neu erstellte Repository erscheint nun unter Ihrem Konto in MQL5 Algo Forge. Aktualisieren Sie im MetaEditor die gewmeinsamen Projekte, um die kürzlich erstellte Fork-Kopie anzuzeigen. Um lokal mit den Projektdateien zu arbeiten, müssen Sie das Repository klonen.

Projekte klonen #

Beim Klonen wird ein Repository vom Remote-Server von MQL5 Algo Forge auf Ihren lokalen Computer heruntergeladen. Dadurch wird ein lokales Arbeitsverzeichnis erstellt, in dem Sie Dateien bearbeiten und Änderungen festschreiben können, bevor Sie diese wieder auf den Remote-Server übertragen.

Das Klonen ist nur für Repositories möglich, auf die Sie in MQL5 Algo Forge Schreibzugriff haben. Wenn Sie lokal auf Ihrem Computer mit Dateien aus einem öffentlichen Projekt arbeiten möchten, müssen Sie das Projekt zunächst forken und anschließend die geforkte Kopie klonen.

Erweitern Sie in MetaEditor den Eintrag „Gemeinsame Projekte“, klicken Sie mit der rechten Maustaste auf das Projekt, das Sie klonen möchten, und wählen Sie dann „Git klonen“ aus.

Ein Projekt klonen

Pull-Anfragen erstellen #

Eine Pull-Anfrage (Merge-Anfrage) ist ein formeller Vorschlag, fertige Arbeit aus einem isolierten Zweig zu prüfen und in einen Zielzweig zu integrieren. Sie dient zudem als Diskussionsplattform, auf der Mitwirkende Ihren Code überprüfen, kommentieren und testen können, um sicherzustellen, dass alles funktioniert, bevor er akzeptiert wird.

Dies sind gängige Szenarien:

  • Wenn Sie in einem separaten Zweig Ihres eigenen Projekts gearbeitet haben, erstellen Sie eine Pull-Anfrage, um Änderungen in den Hauptzweig zu integrieren.
  • Wenn Sie in einem beliebigen Zweig einer geforkten Kopie gearbeitet haben, erstellen Sie einen Pull-Request, um Änderungen in den Hauptzweig des Originalprojekts zusammenzuführen. Einer der Projektbetreuer muss den Pull-Request anschließend genehmigen und annehmen.

Gehe zur Webseite des Repositories, das die Änderungen enthält, klicke auf „Pull-Requests“ und dann auf die Schaltfläche „New pull request“.

Webseite zum Vergleich von Zweigen (branches)

 

Wählen Sie auf der Seite „New pull request“ den Zweig aus, in den Sie zusammenführen möchten, und wählen Sie den Zweig aus, aus dem Sie Änderungen übernehmen möchten. Die Unterschiede zwischen den beiden ausgewählten Zweigen werden hervorgehoben. Klicken Sie auf die Schaltfläche „New pull request“, um fortzufahren.

Webseite zum Vergleich von Zweigen (branches)

Geben Sie auf der nächsten Seite einen Namen, einen Kommentar und weitere Details für den Pull-Request ein. Sie können Labels und Meilensteine hinzufügen, den Pull-Request einer bestimmten Person zuweisen und die Bearbeitungsrechte für Betreuer festlegen.

Webseite mit Optionen von „Pull-Request“

Klicken Sie zum Abschluss auf „Create pull request“ — der Pull-Request wird dann für das Repository eröffnet.

Änderungen zusammenführen #

Das Zusammenführen ist der letzte Schritt, bei dem ein isolierter Zweig mit Änderungen über einen Pull-Request in die Ziel-Codebasis integriert wird. Für diesen Vorgang sind Schreibberechtigungen erforderlich, d. h., nur autorisierte Projektbetreuer können einen Pull-Request genehmigen und zusammenführen.

Öffnen Sie auf der MQL5 Algo Forge-Website den Pull-Request, den Sie zusammenführen möchten. Sie können zu den Registerkarten „Commits“ und „Files changed“ navigieren, um die Änderungen zu prüfen und zu verstehen, und anschließend zur Registerkarte „Conversation“ zurückkehren.

Webseite mit Optionen zum Zusammenführen von Pull-Requests

Wenn Sie zufrieden sind, klicken Sie auf die Schaltfläche „Create merge commit“ oder wählen Sie eine andere Zusammenführungsoption.

Verfügbare Zusammenführungsoptionen und ihre Funktionen:

  • Merge-Commit erstellen: Führt die Zweige zusammen, indem ein neuer, dedizierter „Merge-Commit“ erstellt wird, der beide Historien miteinander verknüpft. Dadurch entsteht in Ihrem Diagramm eine sichtbare Schleife, die genau anzeigt, wann der Zweig begann und endete.
  • Rebase und anschließend Fast-Forward: Verschiebt zunächst die Commits Ihres Zweigs an die Spitze des Zielzweigs und verschiebt anschließend den Zeiger des Ziel-Branches nach vorne. Dies führt zu einer vollkommen flachen, linearen Historie ohne zusätzliche Merge-Commits.
  • Rebase und anschließend „Merge-Commit erstellen“: Verschiebt zunächst die Commits Ihres Zweigs an die Spitze des Zielzweigs, generiert aber dennoch einen abschließenden Merge-Commit, wenn diese zusammengeführt werden. Dadurch bleibt die Historie linear, während gleichzeitig explizit dokumentiert wird, dass eine Zusammenführung stattgefunden hat.
  • „Squash-Commit erstellen“: Komprimiert alle einzelnen Commits aus deinem Zweig zu einem einzigen, sauberen Commit, bevor dieser zum Zielzweig hinzugefügt wird. Dies eignet sich hervorragend, um unübersichtliche, inkrementelle „Work-in-Progress“-Commits zu verbergen.
  • „Fast-forward only“: Integriert die Änderungen nur, wenn der Zielzweig seit Beginn deiner Arbeit keine neuen Aktualisierungen erhalten hat. Ist dies der Fall, schlägt das Zusammenführen fehl, sodass Sie Ihren Zweig zunächst manuell synchronisieren müssen.

Konflikte lösen #

Um Konflikte zu lösen, müssen Sie einen externen Git-Client verwenden oder Befehle in einem Terminal ausführen.

Konflikte beim Pull oder Push in MetaEditor

Beim Pushen von Änderungen vom lokalen zum Remote-Repository oder beim Pull von Änderungen vom Remote-Repository in das lokale Repository kann die automatische Zusammenführung aufgrund eines Konflikts fehlschlagen. Dies sind typische Konfliktsituationen, bei denen konkurrierende Änderungen bereits an das Remote-Repository gepusht wurden:

  • Inhaltskonflikte (Bearbeiten—Bearbeiten). Ein anderer Entwickler, der am selben Zweig arbeitet, hat dieselbe Codezeile geändert, die Sie geändert haben.
  • Strukturelle Konflikte (Löschen—Ändern). Ein anderer Entwickler, der am selben Zweig arbeitet, hat die von Ihnen bearbeitete Datei gelöscht oder umbenannt.
  • Konflikte bei Binärdateien. Ein anderer Entwickler, der am selben Zweig arbeitet, hat dieselbe Binärdatei (z. B. ein Bild oder ein PDF) bearbeitet, an der Sie gearbeitet haben. Git kann Binärdateien nicht zeilenweise lesen und daher auch nicht automatisch zusammenführen.
  • Verzeichnis-Datei-Konflikte. In einem Zweig haben Sie oder ein anderer Entwickler eine Datei gelöscht und einen Ordner mit genau demselben Namen erstellt. In einem anderen Zweig hat jemand die Datei weiterhin als eigenständiges Element verwendet und bearbeitet.

Wenn beim Einlesen von Änderungen in MetaEditor oder einem anderen Tool ein Inhaltskonflikt (Bearbeiten-Bearbeiten) auftritt, umschließt Git die konkurrierenden Codezeilen automatisch mit visuellen Konfliktmarkierungen (<<<<<<<, ======= und >>>>>>>).

Hier sind die typischen Schritte zur Behebung grundlegender Konflikte in einem externen Git-Client:

  1. Suchen Sie die markierte Datei. Öffnen Sie Ihren Git-Client, um festzustellen, bei welchen Dateien Konflikte vorliegen.
  2. Entscheiden Sie, wie Sie den Konflikt beheben möchten:
    • Wenn Ihr Client eine integrierte visuelle Zusammenführung unterstützt, können Sie wählen, welche Version beibehalten werden soll, beide Änderungen akzeptieren oder sie manuell mithilfe des Zusammenführungstools kombinieren. Befolgen Sie die Anweisungen, um den Konflikt zu beheben, und fahren Sie dann mit Schritt 4 fort.
    • Wenn die Datei Elemente aus beiden Versionen enthalten soll oder Sie die Datei lieber selbst bearbeiten möchten, öffnen Sie sie in einem Texteditor oder einer IDE. Suchen Sie die Konfliktmarkierungen um die konkurrierenden Codezeilen herum und fahren Sie dann mit Schritt 3 fort.
  3. Bereinigen und speichern. Bearbeiten Sie den Konfliktbereich manuell, sodass die Datei die von Ihnen gewünschte endgültige Version enthält. Entfernen Sie die Konfliktmarkierungen und jeglichen unerwünschten Code und speichern Sie anschließend die Datei.
  4. Vorbereiten (stage) und committen. Dein Git-Client sollte erkennen, dass die Datei geändert wurde. Bereiten Sie die Datei vor (oder markieren Sie sie als gelöst) und führen Sie anschließend ein Commit durch, um den Merge-Vorgang abzuschließen und zu beenden.
  5. Senden an Remote. Senden Sie die neu committete Merge-Lösung an den Remote-Zweig.

Konflikte beim Zusammenführen auf der MQL5 Algo Forge-Website

Ein Git-Konflikt kann auch auftreten, wenn Sie auf der MQL5 Algo Forge-Website einen Zweig in einen anderen zusammenführen. Auch in diesem Fall müssen Sie einen externen Git-Client oder ein Befehlszeilentool auf Ihrem Computer verwenden, um Folgendes zu tun:

  1. Bringen Sie Ihr lokales Repository auf den neuesten Stand. Öffnen Sie Ihren lokalen Git-Client, holen Sie die neuesten Aktualisierungen aus dem Remote-Repository ab und wechseln Sie dann in den Zielzweig, in den Sie zusammenführen möchten.
  2. Stellen Sie den Konflikt lokal nach. Leiten Sie dieselbe Zusammenführung in Ihrem Git-Client ein. Dadurch sollte derselbe Konflikt entstehen, der die Zusammenführung auf der MQL5 Algo Forge-Website verhindert hat.
  3. Entscheiden Sie, wie Sie den Konflikt lösen möchten. Öffnen Sie die betroffenen Dateien in einem beliebigen Texteditor oder einer IDE. Suchen Sie die Konfliktmarkierungen, bearbeiten Sie den Code manuell, um die Änderungen zu kombinieren oder die richtigen auszuwählen, entfernen Sie die Markierungen vollständig und speichern Sie die Dateien.
  4. Vorbereiten (stage) und committen. Nehmen Sie die geänderten Dateien in Ihrem Git-Client in die Stage-Liste auf, um sie als korrigiert zu kennzeichnen. Committen Sie die Änderungen, um die Zusammenführung offiziell abzuschließen.
  5. Senden an Remote. Senden Sie die neu committete Lösung des Konflikts zurück an den Remote-Zweig. Die MQL5 Algo Forge-Website erkennt automatisch, dass der Konflikt behoben wurde, und Sie können nun die Zusammenführung durchführen.