Мое приложение требует постоянных слияний из нескольких веток в день, а иногда и нескольких выпусков в день. Мне нравится способность rebase помочь мне изолировать от основной ветки только код, который изменился в моей функциональной ветке. Однако перебазирование часто превращается в кошмар, когда я обрабатываю 10 или 20 конфликтов при воспроизведении изменений. Каждый из этих конфликтов может быть разрешен неправильно, и я бы хотел этого избежать. Есть ли способ выполнить «быструю» перебазировку, при которой он фактически не воспроизводит изменения из перебазированной ветки, а просто использует последнюю из этой ветки и изменяет ветвь функций таким образом, чтобы она содержала только отличия от ветки. последняя перебазированная ветка? т.е. он не заботится об истории, он просто выполняет различие и использует патч для последней из каждой ветки для перебазирования?
Слияние, перебазирование или другая альтернатива?
Ответы (1)
То, что вы ищете, - это сквош, который вы можете сделать при слиянии с git merge --squash
и перебазировать немного сложнее.
Однако, если вы просто просматриваете код и хотите увидеть, что изменилось в ветке функции (а не разница между веткой и главной), вы можете использовать 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.
См. справочную страницу gitrevisions и Выбор редакции в Pro Git для получения дополнительных сведений о тройной точке.
person
Schwern
schedule
10.02.2015
Вот что я сейчас делаю, git rebase -i. Это настоящая головная боль, потому что он воспроизводит все изменения. Я не хочу этого. Часто один и тот же фрагмент кода редактируется снова и снова, и во время перебазирования мне приходится разрешать конфликты снова и снова, когда все, что меня волнует, - это окончательная версия master и ее сравнение с моей веткой. Когда я… слияние, это одностадийный процесс. Мне просто нужно один раз разрешить конфликты. Я бы хотел, чтобы это было так просто. Я не знал об этой команде diff ... Это может очень помочь. Спасибо.
- person Walt Howard; 10.02.2015