2016-07-13 4 views
0

Ich bin neu in Git und ich versuche, einen schnelleren Weg zu finden, Konflikte zu lösen. Angenommen, ich habe versucht, eine Verzweigung mit dem Master zu verbinden, und für einige der Dateien bekomme ich Zusammenführungskonflikte.lösen Zusammenführungskonflikte, ohne jede Datei manuell zu bearbeiten

Changes to be committed: 

    modified: ... 

Unmerged paths: 
    (use "git add <file>..." to mark resolution) 

    both modified: ... 

Git geht in jede der beiden modifizierten Dateien und fügt Konfliktlösungsmarker richtig hinzu? (< < < < < < < dieses Zeug). Normalerweise würde ich in die Dateien gehen und sie manuell ändern, aber in diesem Fall sind sie alle bin-Dateien und nicht zu relevant für mein Programm arbeiten. Gibt es eine Möglichkeit, ich kann nur alle modified Dateien inszenieren und angeben, dass ich möchte, dass alle unmodified Dateien so bleiben, wie sie in der master vor der Zusammenführung waren. (Im Prinzip ignorieren Sie die Änderungen von der Verzweigung zu diesen Dateien). Danke

+1

Was ist der Punkt, um die Dateien verfolgt zu halten dann? – choroba

+0

Sie haben einen Punkt. Mein Projekt besteht aus mehr als tausend Dateien. Als ich initialisiert habe, habe ich einfach "git add" hinzugefügt, ohne zu merken, dass es zu Konflikten kommen kann, die es nicht wert sind, den Überblick zu behalten. Ich werde sie aus dem Repository entfernen. Aber in dem Fall, dass sie nützlich waren, gibt es eine Möglichkeit, eine Zusammenführung bestimmter Dateien zu machen? – mysticalstick

+0

Außerdem: Überlegen Sie, ob Sie diese Dateien - oder ein Muster, das zu ihnen passt - zu Ihrem .gitignore hinzufügen. Dies wird verhindern, dass sie überhaupt verfolgt werden; auf lange Sicht besser, wenn sie nicht notwendig sind. – Conduit

Antwort

1

Sie müssen die Kopie der Datei finden, die Sie verwenden möchten, überprüfen Sie es, stufen Sie Änderungen und dann Commit. Zum Beispiel:

git log 

(find out we want the file from commit ac3422d4ceba793ff9fd3df81159d23111a760e2) 

git checkout ac3422d4ceba793ff9fd3df81159d23111a760e2 file/to/fix.txt 
git add file/to/fix.txt 
git commit -m "success!!" 

Was das bedeutet ist:

  • ersetzen Sie die Datei mit dem aus dem angegebenen Commit
  • Stufe die Änderung und den Merge Konflikt auf die Datei markieren, wie aufgelöst
  • Festschreibung der Änderung/Zusammenführung
0

Beim Zusammenführen können Sie eine "Strategie" angeben. Von git help merge:

unsere

Dies löst eine beliebige Anzahl von Köpfen, aber der resultierende Baum der Zusammenführung ist immer, dass der Stromzweig Kopf, effektiv alle Änderungen von allen anderen Zweigen zu ignorieren. Es soll dazu dienen, die alte Entwicklungsgeschichte der Seitenäste abzulösen. Beachten Sie, dass sich dies von der Option -Xours zur rekursiven Zusammenführungsstrategie unterscheidet.

Verwandte Themen