git-rebase
Упомянутая страница руководства -X<option>
может быть передана git-merge
. Когда и как именно?
Я хотел бы сделать ребаз, применяя патчи с рекурсивной стратегией и их опцией (применяйте любые палки, а не пропуская целые конфликтующие коммиты). Я не хочу слияния, я хочу сделать историю линейной.
Я пробовал:
git rebase -Xtheirs
и
git rebase -s 'recursive -Xtheirs'
но git отвергает -X
в обоих случаях.
git rebase -Xtheirs
работает в последних версиях, за исключением того, что конфликты деревьев необходимо разрешать вручную. Вам необходимо запустить git rebase -Xtheirs --continue
(с -X
повторным) после разрешения этих конфликтов.
git
git-rebase
Корнель
источник
источник
git rebase --interactive
тоже. Смотрите мой [обновленный ответ ниже ( stackoverflow.com/a/2945367/6309 ).Ответы:
Вы можете использовать это с Git v1.7.3 или более поздними версиями.
(что является сокращением,
git rebase --strategy recursive --strategy-option theirs ${branch}
как указано в документации )Из Git v1.7.3 Примечания к выпуску:
git rebase --strategy <s>
узнал параметр--strategy-option
/-X
для передачи дополнительных параметров, которые понимаются выбранной стратегией слияния.NB: «Наши» и «их» означают противоположность того, что они делают во время прямого слияния. Другими словами, «их» одобряет коммиты в текущей ветви.
источник
ours
иtheirs
кажется противоположностью того, что я ожидаю. Мне нужно использовать,theirs
чтобы отдать предпочтение моей текущей ветви.-X
подразумевает-s recursive
, так что теперь вы можете использовать толькоgit rebase ${branch} -X theirs
. (источник git-scm.com/docs/git-rebase#git-rebase--Xltstrategy-optiongt )Это для стратегий слияния, которые поставляются с собственным набором опций
должен работать, хотя этот патч упоминает (февраль 2010):
Так что, если это все еще не работает, это обсуждается прямо сейчас!(поддерживается в недавнем Git)
Обновление от commit db2b3b820e2b28da268cc88adff076b396392dfe (июль 2013 г., git 1.8.4+),
Это означает, что
-X
стратегия и стратегия теперь работают с интерактивным перебазированием, а также простым перебазированием.источник
Как сказал iCrazy , эта функция доступна только для git 1.7.3 и выше. Итак, для бедных душ (таких как я), все еще использующих 1.7.1, я представляю решение, которое я сделал сам:
ГИТ-перебазироваться-их
Это очень хорошо отлаженный (и, следовательно, длинный) сценарий, предназначенный для производственного использования: пользовательский интерфейс, обрабатывает несколько файлов, проверяет, есть ли в файле маркеры конфликта и т. Д., Но «ядро» можно обобщить в 2 строки:
И вот полный сценарий:
источник
git rebase --strategy="recursive --theirs" master