Gibt es eine Möglichkeit, git anzugeben, um die Konflikte für ein Paket von Dateien automatisch zu lösen, indem die Remote-Version für jedes von ihnen genommen wird? Zum Beispiel, um die Remote-Version von jeder Datei in einem bestimmten Verzeichnis zu nehmen?Wie lösen Sie Zusammenführungskonflikte automatisch auf, indem Sie die Remote-Version in Git auswählen?
Antwort
git-merge scheint nur die "unsere" Strategie zu unterstützen, wo das Ergebnis einer Zusammenführung die lokale Version ist. Und das nur für den ganzen Baum.
Wenn Sie während der Zusammenführung einen Konfliktstatus eingeben, können Sie git-checkout--theirs
mit einem Pfad zum Abrufen von Dateien aus dem Index verwenden.
Schließlich können Sie git-reset Teile des Baumes zu einem bestimmten Festschreiben erzwingen.
Es gibt jetzt auch http://www.seanius.net/blog/2011/02/git-merge-s-theirs/ wer grundsätzlich empfiehlt, eine merge -s ours
zu machen und dann die Änderungen rückgängig zu machen.
10x David für den Tipp. Es scheint, dass Git-Checkout den Trick macht. Leider werden die Optionen --ours | --theirs von meiner Version von git nicht unterstützt :(scheint, als müsste ich etwas updaten ... –
Wenn es keine --ours | --theirs Option zum git-checkout gibt, Sie können "git show: 2: full_path> file" für --ours (stage # 2) und "git show: 3: full_path> file" für --theirs (stage # 3) verwenden. Oder verwenden Sie "git checkout- index --stage = 2 | 3 - Datei ... 'plumbing –
Letzter Link ist tot – Droidekas
Sie können recursive
Strategie (-s) mit theirs
Option (-X) verwenden. Das heißt:
git merge -s recursive -X theirs source_branch
siehe SO ** [git Befehl für die Herstellung einer Verzweigung wie eine andere] beantworten (http://stackoverflow.com/questions/4911794/git-command-for-making-one-branch-like -another/4912267 # 4912267) ** für * alle * die derzeit möglichen Möglichkeiten, ** git merge -s ihre '** zu simulieren. – VonC