Jak rozwiązywać najlepsze konflikty za pomocą ich zmian?

110

Mój git cherry-pick FOOwywołał konflikt.

Mógłbym przejrzeć pliki będące w konflikcie i usunąć linie między <<<<<<<i =======oraz same znaczniki konfliktu, ale mam nadzieję, że jest łatwiejszy sposób.

Myślę, że svnodpowiednikiem było theirs-conflictrozwiązanie.

Jak to zrobić git?

Nie chcę, git checkout --theirs <file>ponieważ wydaje się, że przynosi ten sam wynik, git checkout foo <file>zamiast po prostu zostać git diff FOO~..FOO <file>zastosowany.

antak
źródło

Odpowiedzi:

196

Najpierw powinieneś cofnąć swój wybór, spróbuj to uruchomić

git cherry-pick --abort

Po drugie, spróbuj dokonać najlepszego wyboru, ale w tym czasie otrzymujesz ich zmiany, a nie twoje, więc zrób to:

git cherry-pick --strategy=recursive -X theirs {Imported_Commit}
elhadi dp ıpɐɥ ן ǝ
źródło
6
Nieco więcej informacji o tym, co robią te przełączniki, można znaleźć na stackoverflow.com/questions/2268172/ ...
antak
27
Próbowałem to dokładnie: git cherry-pick --strategy=recursive -X theirs 1b92440a ja nadal monit o nierozwiązanym konflikcie Unmerged paths: deleted by them: (file path). Dowolny pomysł?
pilau
Bardziej zrozumiałym sposobem resetowania po nieudanym wyborze / scalaniu jest użyciegit reset --merge
Pylinux
10
git cherry-pick --abort- jest to zalecany sposób cofania operacji wybierania wiśniowego.
tommyk
Nie mam -Xopcji w git cherry-pick. git 1.7.2.3.
Frank