2015-02-09 4 views
0

Мое приложение требует постоянных слияний из нескольких филиалов в день и нескольких выпусков в день. Мне нравится способность rebase помочь мне изолировать от основной ветви только код, который изменился в моей ветви функции. Тем не менее, перезагрузка часто превращается в кошмар, когда я обрабатываю 10 или 20 конфликтов при воспроизведении изменений. Каждый из этих конфликтов может быть разрешен неправильно, и я хотел бы избежать этого. Есть ли способ выполнить «быструю» перезагрузку, где она фактически не воспроизводит изменения с переустановленной ветки, а просто использует последнюю из этой ветви и изменяет ветвь функции таким образом, что она содержит только отличия от последний сфальсифицированный филиал? то есть он не заботится об истории, он просто делает diff и использует патч на последней из каждой ветки для переадресации?Слияние, замена или другая альтернатива?

ответ

0

Что вы ищете является сквош который вы можете сделать на слияние с git merge --squash и rebase is a little more complicated.

Однако, если вы просто просматриваете код и хотите посмотреть, что изменилось в ветви функции (а не разницу между веткой и мастером), вы можете использовать git log master..branch, чтобы увидеть все изменения в ветке и git diff master...branch (обратите внимание на тройную точку), чтобы увидеть, что было изменено в ветке.

git diff [--options] <commit>...<commit> [--] [<path>...] 
    This form is to view the changes on the branch containing and up to the second 
    <commit>, starting at a common ancestor of both <commit>. "git diff A...B" is 
    equivalent to "git diff $(git-merge-base A B) B". You can omit any one of 
    <commit>, which has the same effect as using HEAD instead. 

См the gitrevisions man page и Revision Selection in Pro Git для получения более подробной информации о тройной точке.

+0

Вот что я делаю сейчас, git rebase -i. Это настоящая головная боль, потому что она воспроизводит все изменения. Я не хочу этого. Часто один и тот же фрагмент кода редактируется снова и снова, и во время переустановки мне приходится решать конфликты снова и снова, когда все, о чем я забочусь, это окончательная версия мастера и то, как она сравнивается с моей веткой. Когда я --merge, это одношаговый процесс. Мне просто нужно разрешить конфликты один раз. Я бы хотел, чтобы это было легко. Я не знал об этой команде diff .... Это может многое помочь. Благодарю. –

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