Czy zmusić Git do zawsze wybierania nowszej wersji podczas scalania?

103

Załóżmy, że mergegit i jest konflikt scalania.

Moje pytanie brzmi: jak zmusić git, aby zawsze wybierał nowszą wersję kodu będącego w konflikcie, aby nie musieć rozwiązywać konfliktu ręcznie?

Bartek
źródło
ale chcę zrobić scalanie (nie zastępować zatwierdzeń), ale dodatkowo automatycznie rozwiązywać konflikty.
bartek

Odpowiedzi:

189

Nie jest to dokładnie „nowsza” wersja, ale możesz powiedzieć gitowi, aby zawsze preferował wersję z bieżącej gałęzi używając git merge branch -X ourslub preferował wersję scalanej gałęzi, używając git merge branch -X theirs.

Od man git-merge:

nasz:

Ta opcja wymusza automatyczne rozwiązywanie konfliktów porcji poprzez faworyzowanie naszej wersji. Zmiany z innego drzewa, które nie kolidują z naszą stroną, są odzwierciedlane w wyniku scalenia. W przypadku pliku binarnego cała zawartość jest pobierana z naszej strony.

ich:

Jest to przeciwieństwo „naszego”.

Renato Zannon
źródło
9
ours- theirs!! Po prostu powiedz to, a zrozumiesz, co robi polecenie! Uwielbiam Git! : D
Haywire
14
Uwaga: jeśli już używałeś git merge branch, musisz git merge --abortto zrobić, zanim będziesz mógł to zrobić.
John Dvorak,
1
Nie działa na mnie. Nadal przerywa scalanie. error: The following untracked working tree files would be overwritten by merge:Nie wiem nawet, dlaczego te pliki są w tej gałęzi w pierwszej kolejności, ale powinny zostać nadpisane, a git odmawia.
mcv
2
Jeśli nie są śledzone, musisz git addje najpierw usunąć (lub ). Przeczytaj trochę o tym git clean, może ci to pomóc.
Renato Zannon
Czy po uruchomieniu git merge ourssą jakieś pliki konfliktów, czy będzie jakiś dziennik? i czy mogę śledzić z git merge ours?
zx1986
20

Używam tego,

git fetch --prune
git reset --hard origin/master
wolfgang
źródło
2
To rozwiązanie pomogło mi naprawić niescalone konflikty, kiedy wszystko, czego chciałem, to przesłonić gałąź główną. użyłem resetowania git - hard master (z lokalnego)
Juan Mendez