2014-09-29 17 views
14

Ich habe 2 Zweige - master und developGit Konflikte in Pull-Anforderungen

Ich habe in meinem develop Zweig einige Pull-Anforderungen zu tun, wo es 5 Elemente enthält, in dem sie die gleiche wie die Anzahl der Elemente in master ist .

Allerdings hat jemand einige Commits und pushed in ein paar mehr Elemente in die master Zweig, und damit jetzt hat es 8 Elemente.

Da meine Pull-Anforderung in der develop ist noch noch nicht/fusionierte genehmigt, wenn ich meine Pull-Anforderung zu aktualisieren versucht, ich erhalte die Meldung besagt, dass This pull request can't be merged. You will need to resolve conflicts to be able to merge und hat mich gebeten, folgendes zu tun:

git fetch origin master 
git checkout develop 
git merge FETCH_HEAD 
git commit 
git push origin HEAD 

Und das passiert, nachdem ich meine Commits "rausgeschoben" habe, was mich manchmal verwirrt hat. Dann wurde mir klar, dass ich gebeten werde, die zusätzlichen 3 neuen Elemente erneut hinzuzufügen und neu zu binden. Muss ich also dafür sorgen, dass die Gegenstände und Inhalte zwischen diesen beiden Zweigen immer gleich sind? Ich habe immer git pull/fetch verwendet, aber wird es einen besseren Weg für mich geben?

+0

Nein, Sie werden aufgefordert, zusammenzuführen. Sie scheinen verwirrt darüber zu sein, wie Zweigstellen funktionieren - siehe [entsprechendes Kapitel in der Dokumentation] (http://git-scm.com/book/en/Git-Branching) – remram

+0

@remram Wahrscheinlich bin ich tatsächlich verwirrt. Aber warum sollte es mich fragen, ob ich den Master auf Entwickeln möchte? Normalerweise ist es umgekehrt für mich – dissidia

+0

Wenn Sie Master in entwickeln, dann wird Github in der Lage sein, automatisch in Master zu entwickeln. – remram

Antwort

17

Das bedeutet, dass GitHub Ihren PR-Zweig in master zusammenführen möchte, aber es kann nicht, weil es Konflikte gibt. Wie Sie in den Fragekommentaren besprochen haben, ist der beste Weg, dies (normalerweise) zu tun, das Zusammenführen Ihres master-Zweigs in develop in der Befehlszeile. Das wird dir die Konflikte zeigen und dich bitten, sie zu lösen. Sobald Sie diese Zusammenführung abgeschlossen und gedrückt haben, kann der PR mit der grünen Schaltfläche auf GitHub wieder in master eingebunden werden.

Sie könnte einfach verschmelzen Sie Ihre deploy Zweig in master (was ich realisiere klingt ein bisschen vernünftiger). In diesem Fall würden Sie die PR vollständig umgehen. Sie müssten den PR "unmerged" schließen und separat den Merge-Commit manuell auf master schieben.

Durch den ersten Weg zu tun,

  1. Sie machen einen besseren Audit-Trail auf GitHub zu meistern durch die Fusion, die PR verwendet wird;
  2. geben Sie Ihrem Team eine Chance, Ihren Code nach der Zusammenführung zu überprüfen, bevor es auf master landet; und
  3. Wenn Sie automatische Tests (wie Travis CI oder CircleCI) haben, die PRs prüfen, geben Sie ihnen eine Chance, Ihren kombinierten Code auch auszuführen.
+0

Es ergibt dann eine Art Sinn für mich, besonders im Falle der PR-Branche, in der es völlig anders sein würde als das, was ich gemacht habe, wo mein "Entwicklungszweig" in "Master" zusammenfließt, genau wie du habe erwähnt. – dissidia

+0

Das stimmt. Wenn Sie einen einzigen "Entwicklungszweig" haben, der regelmäßig mit "Master" zusammengeführt wird, sollten Sie wahrscheinlich keine Pull-Requests von diesem Zweig ausführen. Wenn Sie möchten, können Sie Pull-Anforderungen von bestimmten Zweigstellen zu "deploy" machen und dann "deploy" in der Befehlszeile zu "master" zusammenführen, wenn Sie bereit sind, eine Reihe von Änderungen zu verschieben. – Peeja

+0

Dieser Link gibt einen guten Überblick darüber, wie man Peejas Aussage über das Zusammenführen von Master in Entwicklung erreichen kann: https://confluence.atlassian.com/bitbucket/resolve-merge-conflicts-704414003.html – Paul

0

Ich löste es mit Eclipse-Git-Schnittstelle wie unten beschrieben.

1- Halten Sie alle Änderungen in 'dev' Zweig bereit und drücken Sie sie auf git.

2- Checkout 'Master' Zweig und ziehen Sie alle Änderungen.

3- Gehen Sie zu 'Git-Repositories-Ansicht -> erweitern Sie den lokalen Ordner und klicken Sie mit der rechten Maustaste auf' Master 'Zweig und klicken Sie auf' Merge 'Option.

4- Es werden alle Konflikte mit roten Punkten im 'Git staging' Fenster angezeigt.

5- Klicken Sie nun mit der rechten Maustaste auf jeden roten Punkt und klicken Sie auf -> 'Ersetzen durch Git Index'. dieser rote Fleck wird jetzt verschwinden.

6- Nachdem Sie dies für alle roten Flecken getan haben, aktivieren Sie die Zusammenführung von der rechten Seite.

7-fertig.

Verwandte Themen