2016-08-08 52 views
2

Ich benutze Intellij und ich möchte die neuesten Änderungen von einem Remote-Zweig B in Zweig A zu setzen. Zweig A ist der Master-Zweig.Git fetch und merge übersprungen fragen mich nach Konflikten

Nachdem ich Zweig B abgerufen und zusammengeführt habe, die Dateien haben, die einen Konflikt mit Zweig A haben, hat er mich nicht nach meiner Entscheidung gefragt, was ich mit den Konflikten machen soll und habe "ihre" für alle Konflikte automatisch verwendet.

Ich erinnerte mich, wenn ich "Branch X zusammenführen" nur ohne git fetch tun, wird es für meine Entscheidung für jeden einzelnen Konflikt fragen.

Was hat diese Probleme verursacht? Mache ich Änderungen von Remote-Zweig falsch?

+0

Ob Sie in der Regel keinen Einfluss auf die Merge-Strategie haben nicht holen sollte. Aber ich weiß nicht, wie ich mit 'its their' aus IntelliJ fusioniere. Ich würde dies von der Kommandozeile aus tun. –

Antwort

0

Zuerst, wenn Sie holen, stellen Sie sicher, dass origin/B, nicht B selbst zusammengeführt werden.

Zweitens wird eine Zusammenführung nur dann verwendet, wenn seit dem letzten gemeinsamen Vorgänger keine Änderungen mehr auftreten.

a--x--a (A) 
    \   
     b--b (B) 
      \  
      b--b (`origin/B`, just fetched) 

Ein Merge wird keinen Konflikt, wenn die Dateien, da verschmilzt x begehen nur Änderungen in origin/B

a--x--a----------M (A, merge commit) 
    \   /
     b--b (B)/
      \ /
      b--b (origin/B, just fetched) 
+0

Bedeutet das, dass, wenn alle in Zweig B geänderten Dateien in Zweig A nicht geändert werden, in der Zusammenführung keine Konflikte auftreten? Was ich jetzt bekomme, ist nach einem gemeinsamen Vorfahren C, B X.html geändert (n Zeilen hinzugefügt), A auch X.html geändert (hinzugefügt m Zeilen), nach der Zusammenführung waren die M Zeilen ohne Konflikte gefragt. –

+0

@UchihaJavaraa ja: wenn diese Dateien seit dem letzten gemeinsamen Vorfahren (hier 'x') nicht in A geändert wurden, dann gibt es keinen Konflikt, und Änderungen von B werden auf A gemeldet. – VonC