2012-11-27 8 views
84

Załóżmy, że I merge git i nie ma konfliktu seryjnego.Wymuś Git, aby zawsze wybierać nowszą wersję podczas scalania?

Moje pytanie brzmi: jak mogę wymusić na Git, aby zawsze wybierał nowszą wersję kodu będącego w konflikcie, więc nie będę musiał rozwiązywać konfliktu ręcznie?

+0

możliwe duplikat [git pull z odległych .. mogę zmusić go do nadpisania zamiast konfliktów raportu?] (Http://stackoverflow.com/questions/4785107/git-pull-from-remote-can-i-force-it-to-overwrite-rather-than-report-conflicts) – Rawkode

+0

ale chcę zrobić scalenie (nie nadpisuję zatwierdzenia), ale dodatkowo automatycznie rozwiązuje konflikty. – bartek

Odpowiedz

160

Nie jest to dokładnie wersja "nowsza", ale można powiedzieć git, aby zawsze preferował wersję w bieżącej gałęzi przy użyciu git merge branch -X ours lub wolał wersję połączonego oddziału, używając git merge branch -X theirs.

Od man git-merge:

ours:

This option forces conflicting hunks to be auto-resolved cleanly by favoring our version. Changes from the other tree that do not conflict with our side are reflected to the merge result. For a binary file, the entire contents are taken from our side.

theirs:

This is the opposite of "ours".

+7

'ours'-' theirs' !! Po prostu powiedz to i zrozumiesz, co robi polecenie! Uwielbiam Git! : D – Haywire

+9

uwaga: jeśli już użyłeś 'git merge branch', będziesz musiał' git merge --abort' zanim będziesz mógł to zrobić. –

+1

Nie działa dla mnie. Nadal nie przerywa scalania. 'error: Poniższe nieśledzone pliki drzewa roboczego zostaną nadpisane przez scalenie:' Nie wiem nawet, dlaczego te pliki są w tej gałęzi, ale powinny być nadpisane, a git odmawia. – mcv

15

Używam tego

git fetch --prune 
git reset --hard origin/master 
+1

To rozwiązanie pomogło mi rozwiązać niezałączone konflikty, gdy chciałem tylko przesłonić gałąź master. użyłem git reset --hard master (z lokalnego) –

Powiązane problemy