Tuesday 21 November 2017

Git Merge Konflikt Binär Optionen


Sie können Zusammenführungskonflikte über die Befehlszeile und einen Texteditor auflösen. Zusammenführungskonflikte können auftreten, wenn konkurrierende Änderungen an derselben Zeile einer Datei vorgenommen werden oder wenn eine Datei gelöscht wird, die eine andere Person zu bearbeiten versucht. Informationen darüber, wie Sie diese Situationen lösen können, finden Sie unter Konkurrierende Leitungsänderungszusammenführungskonflikte und entfernte Dateizusammenfassungskonflikte. Konkurrenzlinienwechsel Zusammenführungskonflikte Um einen Zusammenführungskonflikt zu lösen, der durch konkurrierende Linienänderungen verursacht wird, müssen Sie auswählen, welche Änderungen von den verschiedenen Zweigen in einem neuen Commit übernommen werden sollen. Zum Beispiel, wenn Sie und eine andere Person bearbeitete die Datei styleguide. md auf den gleichen Zeilen in verschiedenen Zweigen des gleichen Git-Repository, youll erhalten einen Zusammenführungs-Konflikt-Fehler, wenn Sie versuchen, diese Zweige zu verschmelzen. Sie müssen diesen Zusammenführungskonflikt mit einem neuen Commit beheben, bevor Sie diese Zweige zusammenführen können. Open Terminal Terminal Git Bash. Navigieren Sie in das lokale Git-Repository, das den Zusammenführungskonflikt hat. Erstellen Sie eine Liste der Dateien, die vom Zusammenführungskonflikt betroffen sind. In diesem Beispiel hat die Datei styleguide. md einen Zusammenführungskonflikt. Öffne deinen Lieblings-Texteditor wie Atom. Und navigieren Sie zu der Datei, die Zusammenführungskonflikte hat. Um den Anfang des Zusammenführungskonflikts in deiner Datei zu sehen, suche die Datei nach dem Konfliktmarker ltltltltltltlt. Wenn Sie die Datei in Ihrem Texteditor öffnen, sehen Sie die Änderungen vom Kopf - oder Basiszweig nach der Zeile ltltltltltltlt HEAD. Als nächstes seht ihr. Die Ihre Änderungen von den Änderungen in der anderen Branche teilt, gefolgt von gtgtgtgtgtgt BRANCH-NAME. In diesem Beispiel schrieb eine Person offen ein Problem in der Basis oder HEAD Zweig und eine andere Person schrieb Ihre Frage in IRC in der Vergleichszweig oder Zweig-a. Entscheiden Sie, ob Sie nur Ihre Branch-Änderungen behalten wollen, halten Sie nur die anderen Zweige Änderungen, oder machen Sie eine brandneue Veränderung, die Änderungen von beiden Zweigen enthalten können. Löschen Sie die Konfliktmarker ltltltltltltlt. . Gtgtgtgtgtgtgt und die Änderungen vornimmt, die du im endgültigen Zusammenschluss wünschst. In diesem Beispiel werden beide Änderungen in die endgültige Zusammenführung integriert: Hinzufügen oder Bühnen Sie Ihre Änderungen. Veröffentlichen Sie Ihre Änderungen mit einem Kommentar. Sie können nun die Zweige in der Kommandozeile zusammenführen oder Ihre Änderungen an Ihrem Remote-Repository auf GitHub verschieben und Ihre Änderungen in einer Pull-Anforderung zusammenführen. Entfernte Dateiverbindungskonflikte Um einen Zusammenführungskonflikt zu lösen, der durch konkurrierende Änderungen an einer Datei verursacht wird, wo eine Person eine Datei in einem Zweig löscht und eine andere Person die gleiche Datei bearbeitet, müssen Sie auswählen, ob die entfernte Datei in einem neuen Commit gelöscht oder beibehalten werden soll. Wenn Sie beispielsweise eine Datei wie README. md bearbeitet haben. Und eine andere Person entfernt die gleiche Datei in einem anderen Zweig in der gleichen Git-Repository, youll erhalten einen Merge-Konflikt-Fehler, wenn Sie versuchen, diese Zweige zu verschmelzen. Sie müssen diesen Zusammenführungskonflikt mit einem neuen Commit beheben, bevor Sie diese Zweige zusammenführen können. Open Terminal Terminal Git Bash. Navigieren Sie in das lokale Git-Repository, das den Zusammenführungskonflikt hat. Erstellen Sie eine Liste der Dateien, die vom Zusammenführungskonflikt betroffen sind. In diesem Beispiel hat die Datei README. md einen Zusammenführungskonflikt. Öffne deinen Lieblings-Texteditor wie Atom. Und navigieren Sie zu der Datei, die Zusammenführungskonflikte hat. Entscheiden Sie, ob Sie die entfernte Datei behalten möchten. Sie können die neuesten Änderungen an der entfernten Datei in Ihrem Texteditor anzeigen. So fügen Sie die entfernte Datei wieder in Ihr Repository ein: So entfernen Sie diese Datei aus Ihrem Repository: Übernehmen Sie Ihre Änderungen mit einem Kommentar. Sie können nun die Zweige in der Kommandozeile zusammenführen oder Ihre Änderungen an Ihrem Remote-Repository auf GitHub verschieben und Ihre Änderungen in einer Pull-Anforderung zusammenführen. WeiterlesenTry: Git Mergetool Es öffnet eine GUI, die Sie durch jeden Konflikt führt, und Sie wählen, um zu verschmelzen. Manchmal braucht es ein bisschen Handbearbeitung nachher, aber meist ist es selbst genug. Es ist viel besser als das Ganze von Hand zu tun. Wie pro JoshGlover Kommentar: Der Befehl nicht unbedingt eine GUI öffnen, wenn Sie eine installieren. Running Git Mergetool für mich führte dazu, dass Vimdiff verwendet wurde. Sie können eines der folgenden Werkzeuge installieren, um es zu verwenden: meld. Opendiff Kdiff3 Tkdiff Xxdiff Tortoisemerge Gvimdiff diffus. Ecmerge P4merge Araxis Vimdiff Auftauchen Antwortete Okt 2 08 um 17:50 Ich verstehe nicht, warum diese Antwort so viele upvotes erhalten hat, es ist nicht sehr hilfreich, da es nur diesen Befehl enthält und absolut keine Erklärung, wie man es benutzt. Wie andere sagten, öffnete es ein Vimdiff und auch wenn ich weiß, wie man Vim benutzt (schalte die Fenster zumindest ein oder schließe sie) Ich weiß nicht einmal, was jedes Fenster weder darlegt, wie man die Änderungen vergleicht oder akzeptiert. Es ist nett zu wissen, dass es einen solchen Befehl gibt, aber ohne Erklärung, wie man es benutzt oder andere 3. Werkzeuge installiert, es ist nutzlos Antwort ndash Petr Mar 10 14 um 13:48 Heres ein wahrscheinlicher Use-Case von oben: Du gehst Um irgendwelche Änderungen zu ziehen, aber oops, du bist nicht auf dem Laufenden: So wirst du up-to-date und versuch noch einmal, aber habe einen Konflikt: Also beschluss dich, die Änderungen zu sehen: Oh ich, oh mein, stromaufwärts gewechselt Einige Dinge, aber nur um meine Änderungen zu verwenden. Nein. Ihre änderungen Und dann versuchen wir eine letzte Zeit Guys, quotoursquot und quottheirsquot ist relativ, ob oder nicht Sie verschmelzen oder rebasing. Wenn Sie sich verschmelzen. Dann quittiert es den Zweig, den du zusammenbringt, und quottheirsquot ist der Zweig, den du zusammenbringst. Dann quittiert es sich auf die Verpflichtungen, die du auf die Wiedergutmachung setzt, während quottheirsquot auf die Commits verweist, die du rebilieren willst. Ndash user456814 May 26 14 at 4:27 Ich finde Merge-Tools selten helfen mir den Konflikt oder die Auflösung zu verstehen. Im in der Regel erfolgreicher Blick auf die Konfliktmarker in einem Texteditor und mit git log als Ergänzung. Hier sind ein paar Tipps: Das Beste, was ich gefunden habe, ist, den diff3-Merge-Konfliktstil zu benutzen: git config merge. conflictstyle diff3 Dies erzeugt Konfliktmarker wie folgt: Der mittlere Abschnitt ist das, was der gemeinsame Vorfahr aussah. Dies ist nützlich, weil man es mit den Top - und Bottom-Versionen vergleichen kann, um einen besseren Sinn zu bekommen, was auf jedem Zweig geändert wurde, was Ihnen eine bessere Vorstellung gibt, was der Zweck jeder Veränderung war. Wenn der Konflikt nur ein paar Zeilen ist, macht dies in der Regel den Konflikt sehr offensichtlich. (Wenn du weißt, wie man einen Konflikt beheben kann, muss man sich dessen bewusst sein, was andere Leute an der Arbeit haben. Wenn du dich verwirrt hast, ist es wohl am besten, diese Person einfach in dein Zimmer aufzurufen, damit sie sehen können, was du anblickst Konflikt ist länger, dann werde ich schneiden und fügen Sie jede der drei Abschnitte in drei separate Dateien, wie meine, gemeinsame und ihre. Dann kann ich die folgenden Befehle ausführen, um die beiden Diff-Hunks zu sehen, die den Konflikt verursacht haben: Dies ist nicht dasselbe wie ein Merge-Tool, da ein Merge-Tool alle nicht-widersprüchlichen Diff-Hunks enthält. Ich finde das ablenkend Jemand hat das bereits erwähnt, aber das Verständnis der Absicht hinter jedem Diff Hunk ist in der Regel sehr hilfreich für das Verständnis, wo ein Konflikt kam und wie es zu behandeln. Dies zeigt alle Commits, die diese Datei zwischen dem gemeinsamen Vorfahren und den beiden Köpfen, die Sie verschmelzen, berührt haben. (Also es gibt keine Commits, die bereits in beiden Filialen vor der Verschmelzung vorhanden sind.) Dies hilft Ihnen, Diffhunks zu ignorieren, die eindeutig kein Faktor in Ihrem aktuellen Konflikt sind. Überprüfen Sie Ihre Änderungen mit automatisierten Werkzeugen. Wenn Sie automatisierte Tests haben, führen Sie diese aus. Wenn du eine Flusen hast. Laufen das. Wenn es ein bautierbares Projekt, dann bauen Sie es, bevor Sie begehen, etc. In allen Fällen müssen Sie ein bisschen Tests zu tun, um sicherzustellen, dass Ihre Änderungen nicht brechen nichts. (Heck, auch ein Zusammenbruch ohne Konflikte kann den Arbeitscode brechen.) Planen Sie mit den Mitarbeitern kommunizieren. Vorwärts zu planen und sich dessen bewusst zu sein, was andere arbeiten, können helfen, Zusammenführungskonflikte zu verhindern und sie zu helfen, sie früher zu lösen - während die Details noch frisch im Auge sind. Zum Beispiel, wenn Sie wissen, dass Sie und eine andere Person arbeiten beide an verschiedenen Refactoring, die beide beeinflussen die gleiche Menge von Dateien, sollten Sie miteinander reden vor der Zeit und bekommen einen besseren Sinn für welche Arten von Änderungen jeder von euch ist Herstellung. Sie können erhebliche Zeit und Mühe sparen, wenn Sie Ihre geplanten Änderungen seriell statt parallel durchführen. Für große Refactorings, die über einen großen Codepaket schneiden, sollten Sie die Arbeit seriell betrachten: Jeder hört auf, an diesem Bereich des Codes zu arbeiten, während eine Person das komplette Refactoring durchführt. Wenn Sie nicht seriell arbeiten können (aufgrund von Zeitdruck, vielleicht), dann kommunizieren über erwartete Zusammenführungskonflikte zumindest hilft Ihnen, die Probleme früher zu lösen, während die Details noch frisch im Auge sind. Zum Beispiel, wenn ein Mitarbeiter eine störende Reihe von Begehren im Laufe einer einwöchigen Periode macht, können Sie wählen, um mergerebase auf diesem Kollegen Zweig einmal oder zweimal jeden Tag während dieser Woche. Auf diese Weise, wenn Sie Mergerebase-Konflikte finden, können Sie sie schneller lösen, als wenn Sie ein paar Wochen warten, um alles zusammen in einem großen Klumpen zu verschmelzen. Wenn Sie sich nicht sicher sind, verschmelzen Sie es nicht. Merging kann sich überwältigen, vor allem, wenn es eine Menge von widersprüchlichen Dateien und die Konfliktmarker decken Hunderte von Linien. Oftmals bei der Schätzung von Softwareprojekten gibt es nicht genügend Zeit für Overhead-Items wie die Handhabung einer knorrigen Fusion, so fühlt es sich an wie ein echter Widerstand, um mehrere Stunden zu verbringen, jeden Konflikt zu zerlegen. Auf lange Sicht ist die Planung voraus und bewusst, was andere arbeiten, sind die besten Werkzeuge für die Antizipation von Zusammenführungskonflikten und bereiten sich darauf vor, sie in kürzerer Zeit richtig zu lösen. Identifizieren Sie, welche Dateien im Konflikt sind (Git sollte Ihnen das sagen). Öffnen Sie jede Datei und untersuchen Sie die diffs Git abgrenzt sie. Hoffentlich wird es offensichtlich sein, welche Version von jedem Block zu halten. Möglicherweise müssen Sie es mit anderen Entwicklern besprechen, die den Code begangen haben. Sobald du den Konflikt in einer Datei gelöscht hast, git add thefile. Sobald du alle Konflikte gelöst hast, git rebase - fortsetzen oder was auch immer Befehl Git sagte, wenn du fertig bist. Thulfir: wer sagte etwas über die Herstellung eines Zweigs das gleiche wie ein anderes Es gibt verschiedene Szenarien, wo Sie verschmelzen müssen, ohne einen Zweig der gleiche wie ein anderer. Einer ist, wenn du mit einer Entwicklungsbranche fertig bist und seine Änderungen in den Master-Zweig einbeziehen will, kann der Entwicklungszweig gelöscht werden. Ein anderer ist, wenn du deinen Entwicklungszweig rebilieren willst, um den endgültigen Abschluss in den Meister zu erleichtern. Ndash Teemu Leisti Sep 21 12 at 8:50 JustinGrant git add Stages Dateien in den Index es fügt nichts zum Repository hinzu. Git commit fügt dem repository etwas hinzu. Diese Verwendung macht Sinn für Zusammenführungen - die Zusammenführung automatisiert automatisch alle Änderungen, die automatisch zusammengeführt werden können. Es liegt in Ihrer Verantwortung, den Rest der Änderungen zusammenzuführen und diese dem Index hinzuzufügen, wenn Sie fertig sind. Ndash mehaase Oct 17 12 bei 15:13 Mit quotgit addquot ist der eigentliche Trick hier. Sie können nicht einmal wollen, um zu begehen (vielleicht möchten Sie stash), aber Sie müssen quotcit addquot, um den Zusammenschluss abzuschließen. Ich denke, Mergetool macht das für Sie hinzufügen (obwohl es isn39t in der Manpage), aber wenn Sie die Verschmelzung manuell tun, müssen Sie quotgit addquot verwenden, um es zu vervollständigen (auch wenn Sie donpat wollen, um zu begehen). Ndash nobar Okt 25 10 at 9:37 Zusammenführende Konflikte passieren, wenn Änderungen an einer Datei zur gleichen Zeit vorgenommen werden. Hier ist, wie es zu lösen Hier sind einfache Schritte, was zu tun ist, wenn man in den Konfliktzustand kommt: Beachten Sie die Liste der Konfliktdateien mit: git status (unter Unmerged paths section). Löse die Konflikte separat für jede Datei durch einen der folgenden Ansätze: Verwenden Sie GUI, um die Konflikte zu lösen: git mergetool (der einfachste Weg). Um Remote-Version zu akzeptieren, verwenden Sie: git checkout --theirs pathfile. Dies wird jede lokale Änderung, die Sie für diese Datei getan haben, ablehnen. Um lokale Version zu akzeptieren, verwenden Sie: git checkout --ours pathfile Wie auch immer Sie vorsichtig sein, da Remote-Änderungen, die Konflikte aus irgendeinem Grund getan wurden. Bearbeiten Sie die Konfliktdateien manuell und suchen Sie nach dem Codeblock zwischen ltltltltlt gtgtgtgtgt dann wählen Sie die Version entweder von oben oder unten. Siehe: Wie Konflikte präsentiert werden. Pfad - und Dateinamenkonflikte können durch git add git rm gelöst werden. Schließlich überprüfen Sie die Dateien bereit für Commit mit: git Status. Wenn du noch irgendwelche Dateien unter Unmerged Pfade hast. Und du hast den Konflikt manuell gelöst, dann lass Git wissen, dass du es gelöst hast: git add pathfile. Wenn alle Konflikte erfolgreich gelöst wurden, begehen Sie die Änderungen durch: git commit - a und drücken Sie wie gewohnt an die Fernbedienung. Ive erfolgreich verwendet DiffMerge, die visuell vergleichen und zusammenführen können Dateien auf Windows, MacOS und LinuxUnix. Es kann grafisch die Änderungen zwischen 3 Dateien zeigen und es ermöglicht die automatische Verschmelzung (wenn sicher, dies zu tun) und die volle Kontrolle über die Bearbeitung der resultierenden Datei. Bildquelle: DiffMerge (Linux-Screenshot) Einfach herunterladen und im Repo ausführen als: Auf MacOS kannst du via: Und wohl (wenn nicht bereits vorhanden) du benötigst den folgenden extra einfachen Wrapper in deinem PATH platzieren (zB usrbin): Dann kannst du Verwenden Sie die folgenden Tastenkombinationen: - Alt - Up Down, um zu vorherigen Änderungen zu springen. - Alt - Links Rechts, um den Wechsel von links oder rechts zu akzeptieren Alternativ können Sie auch Opendiff (Teil von Xcode Tools) verwenden, mit dem Sie zwei Dateien oder Verzeichnisse zusammenführen können, um eine dritte Datei oder ein Verzeichnis zu erstellen. Sehen Sie, wie Konflikte präsentiert werden oder in Git die Git-Merge-Dokumentation zu verstehen, was zusammenführen Konfliktmarker sind. Auch das How to Resolve Conflicts Abschnitt erklärt, wie die Konflikte zu lösen: Nach einem Konflikt können Sie zwei Dinge tun: Entscheiden Sie sich nicht zu verschmelzen. Die einzigen Clean-ups, die Sie benötigen, müssen die Indexdatei auf den HEAD-Commit zurücksetzen, um sich umzukehren 2. und um die Arbeitsbaumänderungen zu bereinigen, die von 2. und 3. gemacht wurden. Git merge --abort kann dafür verwendet werden. Beheben Sie die Konflikte. Git markiert die Konflikte im Arbeitsbaum. Bearbeiten Sie die Dateien in Form und git fügen Sie sie dem Index hinzu. Verwenden Sie git commit, um den Deal zu versiegeln. Sie können den Konflikt mit einer Reihe von Werkzeugen bearbeiten: Verwenden Sie ein Mergetool. Git Mergetool, um ein grafisches Mergetool zu starten, das Sie durch den Zusammenschluss bearbeiten wird. Schau dir die Diffs an. Git diff zeigt ein dreidimensionales Diff, das die Änderungen sowohl der HEAD - als auch der MERGEHEAD-Version hervorhebt. Schau dir die Diffs von jedem Zweig an. Git log --merge - p ltpathgt zeigt Diffs zuerst für die HEAD Version und dann die MERGEHEAD Version. Schau dir die Originale an. Git Show: 1: Dateiname zeigt den gemeinsamen Vorfahren, Git Show: 2: Dateiname zeigt die HEAD Version und Git Show: 3: Dateiname zeigt die MERGEHEAD Version. Sie können auch über die Zusammenführung von Konfliktmarkern lesen und wie Sie sie im Pro Git Buchabschnitt Basic Merge Conflicts lösen können. Überprüfen Sie den Git-Status: git-Status Holen Sie sich den Patch: Git-Abruf (Check-out der richtige Patch von Ihrem Git Commit) Checkout ein lokaler Zweig (temp1 in meinem Beispiel hier): git checkout - b temp1 Ziehen Sie den aktuellen Inhalt aus Master: Git Pull - - Fräs-Ursprungs-Master Starten Sie das Mergetool und überprüfen Sie die Konflikte und beheben Sie sie. Und überprüfen Sie die Änderungen in der Remote-Filiale mit Ihrem aktuellen Zweig: git mergetool Überprüfen Sie den Status wieder: git status Löschen Sie die unerwünschten Dateien lokal erstellt durch Mergetool, in der Regel Mergetool erstellt zusätzliche Datei mit. orig Erweiterung. Bitte löschen Sie diese Datei, da das nur das Duplikat ist und Änderungen lokal beheben und die richtige Version Ihrer Dateien hinzufügen. Git add yourchangedcorrectfiles check the status again: git status Belege die Änderungen an der gleichen Commit-ID an (dies vermeidet einen neuen separaten Patch-Satz): git commit --amend Push zum Master-Zweig: git push (zu deinem git-Repository) Du könntest reparieren Verschmelzen Konflikte in einer Reihe von Möglichkeiten, wie andere detaillierte haben. Ich denke, der echte Schlüssel ist zu wissen, wie sich die Veränderungen mit lokalen und entfernten Repositories ändern. Der Schlüssel dazu ist das Verfolgen von Verzweigungen. Ich habe festgestellt, dass ich den Tracking-Zweig als das fehlende Stück in der Mitte zwischen mir meine lokalen, tatsächlichen Dateien Verzeichnis und die Fernbedienung als Ursprung definiert denken. Ive persönlich in die Gewohnheit von 2 Dinge zu helfen, dies zu vermeiden. Das hat zwei Nachteile - a) Alle neu veränderten Dateien werden hinzugefügt und das könnte einige unerwünschte Änderungen enthalten. B) Sie können die Dateiliste nicht zuerst überprüfen. Also stattdessen mache ich: Auf diese Weise bist du mehr bewusst, welche Dateien hinzugefügt werden und du bekommst auch die Liste zu lesen und denke ein bisschen mehr, während du den Editor für die Nachricht verwende. Ich finde es auch verbessert meine Commit-Nachrichten, wenn ich einen Vollbild-Editor anstelle der Option - m verwenden. Update - wie die Zeit vergangen ist Ive schaltete mehr auf: Auch (und mehr relevant für Ihre Situation), versuche ich zu vermeiden: weil Pull impliziert einen Merge und wenn Sie Änderungen lokal, dass Sie nicht möchten, dass Sie zusammen verschmelzen können Sie am Ende mit fusionierten Code Andor zusammenführen Konflikte für Code, der nicht zusammengeführt werden sollte. Stattdessen versuche ich zu tun Sie können auch dies hilfreich finden: einfach, wenn Sie gut wissen, dass Änderungen in einem der Repositories ist nicht wichtig, und wollen alle Änderungen zu Gunsten der anderen zu lösen, so verwenden: um Änderungen in der Bevorzugung deines Repositories Oder um Änderungen zugunsten des anderen oder des Hauptrepositorys zu lösen. Oder Sie müssen ein GUI-Merge-Tool verwenden, um Dateien nacheinander zu durchlaufen, sagen Sie, dass das Merge-Tool p4merge ist. Oder schreibe irgendwelche Namen, die du bereits installiert hast und nach dem Beenden einer Datei, musst du speichern und schließen, also wird der nächste geöffnete beantwortet 26. Januar 16 um 17:42 git checkout. - Sie haben mein Problem gelöst ndash Ramesh Chand Mar 10 16 at 6:53 Wenn Sie es vorziehen, Konflikte manuell zu lösen, öffnen Sie den Ordner in Visual Studio Code, markiert es Dateien mit Konflikten und Farben Konfliktlinien in jedem ndash Mohamed Selim Jul 3 16 at 8:31 CoolAJ86s Antwort summiert so ziemlich alles. Falls Sie Änderungen an beiden Filialen im selben Code haben, müssen Sie eine manuelle Zusammenführung durchführen. Öffnen Sie die Datei in Konflikt in jedem Texteditor und Sie sollten folgende Struktur sehen. Wählen Sie eine der Alternativen oder eine Kombination von beiden in einer Weise, dass Sie wollen, dass neue Code zu sein, während das Entfernen von Gleichheitszeichen und spitzen Klammern. Wenn ich von Pullfetchmerge in den obigen Antworten spreche, möchte ich einen interessanten und produktiven Trick teilen, git pull --rebase Dieser obige Befehl ist der nützlichste Befehl in meinem Gitleben, der viel Zeit sparte. Bevor du deine neu begangene Änderung auf den entfernten Server drückst, versuchst du git pull --rebase eher git pull und manuelles Zusammenführen und es wird automatisch die neuesten Remote-Server-Änderungen (mit einem Fetch Merge) synchronisieren und dein lokales aktuelles Commit an der Spitze in git log setzen . Keine Notwendigkeit, sich um manuelle Pullmerge zu sorgen. Im Falle von Konflikten, nur verwenden Scheint nicht immer für mich arbeiten und in der Regel endet angezeigt jedes Commit, das zwischen den beiden Zweigen unterschiedlich war, dies geschieht auch bei der Verwendung - um den Weg von dem Befehl zu trennen. Was ich tue, um dieses Problem zu umgehen, eröffne zwei Kommandozeilen und in einem Durchlauf und in der anderen MERGEDINBRANCH mit dem Zweig, den ich in den Pfad und den Pfad mit der Datei, die widersprüchlich ist, Dieser Befehl protokolliert alle Commits in Patch-Form zwischen (.) Zwei Commits. Wenn du eine Seite leer gehst wie in den Befehlen über git wird automatisch HEAD (die Filiale, die Sie in diesem Fall verschmelzen). Dies ermöglicht es Ihnen zu sehen, was Commits ging in die Datei in den beiden Zweigen, nachdem sie divergierten. In der Regel macht es viel einfacher, Konflikte zu lösen. Antwortete am 11. Dezember 14 um 15:19 Ich folge immer den folgenden Schritten, um Konflikte zu vermeiden. Git Checkout Master (Kommen Sie zum Master Zweig) Git Pull (Aktualisieren Sie Ihren Master, um den neuesten Code zu bekommen) git checkout - b mybranch (Checkout ein neuer Zweig und anfangen, an diesem Zweig zu arbeiten, damit dein Meister immer über dem Kofferraum bleibt.) Git hinzufügen Und git Commit und Git Push (auf Ihrem lokalen Zweig nach Ihren Änderungen) git checkout master (Kommen Sie zurück zu Ihrem Master.) Jetzt können Sie das gleiche tun und pflegen, wie viele lokale Filialen Sie wollen und arbeiten gleichzeitig meine nur eine Git Checkout zu tun Ihr Zweig, wenn nötig. Antwortete am 12. Februar 15 um 4:25 Wenn du von Zweig (Test) zum Master verschmelzen willst, kannst du diesen Schritten folgen: Schritt 1: geh in den Zweig Step2: Git Pull - Rebase Herkunft Meister Schritt 3: Wenn es einige Konflikte gibt, Gehen Sie zu diesen Dateien, um es zu ändern. Schritt 4: füge diese Änderungen hinzu Step5: git rebase --continue Step6: Wenn es noch Konflikte gibt, geh wieder zu Step3 zurück. Wenn es keinen Konflikt gibt, folge folgendes: git Push Ursprung Test Schritt 7: und dann gibt es keinen Konflikt zwischen Test und Master. Sie können direkt zusammenführen. Antwortete Aug 18 14 um 19:42 Ich möchte entweder meine oder ihre Version in vollem Umfang, oder wollen einzelne Änderungen zu überprüfen und entscheiden für jeden von ihnen. Völlig akzeptiere meine oder ihre Version: Akzeptiere meine Version (lokal, unsere): Akzeptiere ihre Version (remote, ihre): Wenn du für alle Konfliktdateien laufen möchtest, laufe: Überprüfe alle Änderungen und akzeptiere sie einzeln git mergetool Überprüfungsänderungen und akzeptiere entweder Version für jeden von ihnen. Git add ltfilenamegt git commit - m fusioniert bla bla Default mergetool arbeitet in Kommandozeile. Wie man eine Befehlszeile Mergetool verwenden sollte eine separate Frage sein. Sie können hier auch visuelles Werkzeug installieren, z. B. Meld und run Es öffnet lokale Version (unsere), Basis oder fusionierte Version (das aktuelle Ergebnis der Merge) und Remote-Version (ihre). Speichern Sie die verschmolzene Version, wenn Sie fertig sind, führen Sie git mergetool - t meld wieder, bis Sie keine Dateien brauchen verschmelzen, dann gehen Sie zu den Schritten 3. und 4. Zusammenführen Konflikte können in verschiedenen Situationen auftreten: Wenn Sie git holen und dann git merge Wenn Wenn du Git-Patches (Commits, die in Dateien übertragen werden sollen, zB per E-Mail) Sie müssen ein Merge-Tool installieren, das mit Git kompatibel ist, um die Konflikte zu lösen. Ich persönlich benutze KDiff3 und Ive fand es schön und handlich. Sie können seine Windows-Version hier herunterladen: BTW, wenn Sie Git Extensions installieren gibt es eine Option in seinem Setup-Assistenten, um Kdiff3 zu installieren. Dann setze git configs, um Kdiff als Mergetool zu verwenden: (Erinnere dich daran, den Pfad mit dem eigentlichen Pfad der Kdiff exe Datei zu ersetzen.) Dann jedes Mal, wenn du über einen Zusammenführungskonflikt kommst, musst du nur diesen Befehl ausführen: Dann öffnet man den Kdiff3, Und versucht zuerst, die Zusammenführungskonflikte automatisch zu lösen. Die meisten Konflikte würden spontan gelöst und du musst den Rest manuell reparieren. Sobald ihr einmal fertig ist, speichern Sie die Datei und es geht zur nächsten Datei mit Konflikt und Sie tun das Gleiche wieder, bis alle Konflikte gelöst sind. Um zu überprüfen, ob alles erfolgreich verschmolzen ist, führen Sie einfach den Mergetool-Befehl erneut aus. Sie sollten dieses Ergebnis erhalten: Ab 12. Dezember 2016 können Sie Zweige zusammenführen und Konflikte auf Github auflösen. Wenn Sie also nicht die Befehlszeile verwenden möchten, 3rd-Party-Tools, die hier von älteren Antworten angeboten werden. Gehe mit GitHubs natives Werkzeug. Diese Blog-Post erklärt im Detail, aber die Grundlagen sind, dass bei der Verschmelzung von zwei Zweige über die Benutzeroberfläche, sehen Sie nun eine Lösung Konflikte Option, die Sie zu einem Editor, mit dem Sie mit diesen Zusammenführungskonflikten umgehen können. Antwortete Jan 9 um 19:45 Dies ist nicht fragen, über github so ich abgestimmt, was ich sehe, um eine sehr schlechte Antwort zu sein. Ndash mschuett Jan 25 at 5:06 Danke, dass du mich in Schach gehalten hast, Mann. Ndash maxwell Jan 26 at 23:07 Mit Geduld Im Überraschung niemand sonst sprach über die Lösung von Konflikten mit Geduld mit der Zusammenführung rekursive Strategie. Für große Zusammenführungskonflikte, mit Geduld lieferte gute Ergebnisse für mich. Die Idee ist, dass es versuchen wird, Blöcke anstatt einzelne Linien zu passen. Wenn Sie die Einrückung Ihres Programms zum Beispiel ändern, stimmt die Standard-Git-Merge-Strategie manchmal mit einzelnen Klammern überein. Aus der Dokumentation: Vergleich mit dem gemeinsamen Vorfahren Wenn Sie einen Zusammenführungskonflikt haben und sehen wollen, was andere bei der Änderung ihrer Zweigstelle im Sinn hatten, Manchmal einfacher, ihren Zweig direkt mit dem gemeinsamen Vorfahren zu vergleichen (anstelle unseres Zweiges). Dazu können Sie Merge-Base verwenden: Normalerweise möchten Sie nur die Änderungen für eine bestimmte Datei sehen: 7.8 Git Tools - Advanced Merging Advanced Merging Merging in Git ist in der Regel ziemlich einfach. Da Git es einfach macht, einen anderen Zweig mehrfach zu verschmelzen, bedeutet das, dass man einen sehr langen gelebten Zweig haben kann, aber man kann es auf dem Laufenden halten, wie Sie gehen, lösen kleine Konflikte oft, anstatt von einem enormen Konflikt an der Ende der Serie. Allerdings treten manchmal knifflige Konflikte auf. Im Gegensatz zu einigen anderen Versionskontrollsystemen, versucht Git nicht zu klug über die Zusammenführung von Konfliktlösungen. Gits Philosophie ist klug über die Bestimmung, wann eine Merge-Auflösung ist eindeutig, aber wenn es einen Konflikt, es nicht versuchen, clever über automatisch zu lösen. Deshalb, wenn Sie zu lange warten, um zwei Zweige zu verschmelzen, die schnell divergieren, können Sie in einige Probleme laufen. In diesem Abschnitt, gut gehen, was einige dieser Fragen sein könnte und welche Werkzeuge Git gibt Ihnen zu helfen, diese kniffligere Situationen zu behandeln. Nun auch decken einige der verschiedenen, nicht-Standard-Arten von Merges, die Sie tun können, sowie zu sehen, wie man wieder aus Merges, die Sie getan haben. Zusammenführen von Konflikten Während wir einige Grundlagen zur Lösung von Zusammenführungskonflikten in grundlegenden Zusammenführungskonflikten behandelt haben. Für komplexere Konflikte, bietet Git ein paar Werkzeuge, um Ihnen herauszufinden, was los ist und wie man besser mit dem Konflikt umgehen kann. Zunächst einmal, wenn überhaupt möglich, versuchen Sie sicherzustellen, dass Ihr Arbeitsverzeichnis sauber ist, bevor Sie einen Zusammenschluss, der Konflikte haben kann. Wenn Sie Arbeit in Arbeit haben, entweder verpflichten Sie es zu einem temporären Zweig oder stash es. Dies macht es so, dass Sie alles, was Sie hier versuchen, rückgängig machen können. Wenn Sie Änderungen in Ihrem Arbeitsverzeichnis nicht gespeichert haben, wenn Sie einen Zusammenschluss ausführen, können einige dieser Tipps Ihnen helfen, diese Arbeit zu verlieren. Lass uns durch ein ganz einfaches Beispiel gehen. Wir haben eine super einfache Ruby-Datei, die hallo Welt druckt. In unserem Repository erstellen wir einen neuen Zweig namens Whitespace und fahren fort, alle Unix-Zeilenendungen auf DOS-Zeilenendungen zu ändern, die im Wesentlichen jede Zeile der Datei ändern, aber nur mit Whitespace. Dann ändern wir die Linie Hallo Welt zu hallo mundo. Jetzt schalten wir zurück zu unserem Master-Zweig und fügen Sie einige Dokumentation für die Funktion hinzu. Wie kann ich eine Binärdatei mit Git auflösen Wenn Sie einen Merge in Git durchführen. Sie können die Meldung sehen: In diesem Szenario ist somefile. dll eine Binärdatei, die sowohl im aktuellen Zweig als auch im Zweig geändert wurde, und der Zweig, den Sie in den aktuellen Zweig einfügen möchten. Da die Datei nicht textuell zusammengeführt werden kann, müssen Sie eine Entscheidung treffen: Halten Sie die Version der Datei in Ihrem aktuellen Zweig oder die Version in der anderen Filiale. In TortoiseSVN war ich gewohnt, in der Lage zu sein, mit der rechten Maustaste auf die fragliche Datei zu klicken, und wähle "Resolve using Mine" oder "Resolve using thes". Also, was ist die Git-Äquivalent Resolve mit meiner Die Datei in Ihrer Arbeitskopie ist immer noch die Kopie von Ihrem aktuellen Zweig mit anderen Worten, es wurde nicht durch den Merge-Versuch modifiziert. Um den Konflikt zu beheben und diese Datei zu behalten: Beheben Sie ihre Verwendung Wenn Sie es vorziehen, den Konflikt mit ihrer Kopie zu beheben, müssen Sie die Version der Datei aus dem Zweig, den Sie versuchten, zu verschmelzen: Nun, da Sie die richtige Version von haben Die Datei in Ihrer Arbeitskopie, können Sie es als gelöscht markieren (indem Sie es hinzufügen), und begehen: Beachten Sie, dass anstelle von otherbranch. Du kannst einen beliebigen Namen (böhmisch) verwenden, der sich auf einen Zweig bezieht: einen lokalen Zweignamen (otherbranch), einen entfernten Zweignamen (Ursprungsmaster), ein bestimmtes Commit SHA (980e3cc) usw. Wenn du zB von deinem verschmolzen würdest Fernbedienung, wenn Sie den Konflikt erhalten haben, und Sie wollten mit der Remote-Version zu lösen, würden Sie diese Kopie der Datei mit: Sie dann fügen Sie die Datei und verpflichten, wie oben beschrieben. AKTUALISIEREN Es gibt eine Abkürzung für das Kopieren von der anderen Filiale (und es nutzt sogar die Terminologie, die ich erwartet hatte): Dieser Eintrag wurde in git veröffentlicht. Lesezeichen für den Permalink Beide Kommentare hier mit dem RSS-Feed für diesen Beitrag.

No comments:

Post a Comment