2013-10-09 2 views
5

Я думаю о преобразовании моего слияния только рабочий процесс, чтобы использовать rebase чаще. В этом конкретном случае я единственный разработчик, но я работаю на нескольких платформах, часто редактируя одни и те же файлы для частей, специфичных для платформы, как правило, с неконфликтными изменениями. Но я немного не уверен в этом, из-за споров о git merge vs git rebase и их безопасности (например, см. this против this, два верхних ответа от a question).git safe rebase или «попробуйте rebase, fallback to merge»

Вопрос: как сделать что-то вроде следующего, с целью «безопасный», но все-таки как можно более чистой тянуть/перебазирование/слияний:

  • Если есть не-толкнул фиксаций, затем git pull --rebase до первая операция слияния, которая конфликтует с местной историей.
  • Затем git pull --no-rebase, чтобы объединить остальные и разрешить конфликт.
  • Возможно, вы вернетесь к восстановлению для последних нескончаемых изменений, чтобы сохранить параллельную часть истории как можно короче.

Так что, если нет конфликтов, конечный результат будет тянуть с перестановкой и хорошей линейной историей. Если есть конфликты, тогда слияния будут видны, но параллельная история будет как можно короче.

Возможно ли это с помощью простой простой команды git или двух, с правильными переключателями (которые я мог бы написать в сценарий pull или псевдонима)? Если нет, возможно ли это с помощью какого-либо существующего инструмента?

Другой способ посмотреть на этот вопрос: Я хочу, чтобы автоматизировать решение о выборе перебазироваться или сливаются, поэтому мне не нужно думать о том, что детали, делая тянуть.

Кроме того, это даже имеет смысл? :)

ответ

2

Я следую тому, что вы предлагаете. Сначала я пытаюсь переустановить, и если конфликтов нет, тогда это просто работает, и ваша история намного чище. Если есть конфликт, я делаю слияние.

Единственное различие заключается в том, что я не пытаюсь разделить слияние и переустановку между фиксациями одного тяги, как вы предлагаете в своей третьей точке. На самом деле, я не уверен, что это даже имеет смысл. Это похоже на работу через конфликты и выполнение rebase continue при разрешении конфликтов. Результат будет таким же, как и перебалансировка с конфликтами.

Если у вас есть изменения, которые необходимо нажать. Либо выполните rebase, либо, если есть конфликты, выполните слияние.

Смежные вопросы