Подтвердить что ты не робот

Почему я должен снова и снова решать один и тот же конфликт?

Когда я делаю git rebase branch1 в моем branch1-local, я получаю конфликты. Я разрешаю конфликт, делаю git add <conflicted-add>, а затем выполняю git rebase --continue, когда меня спрашивает git. После этого применяется новая фиксация. Появляется новый конфликт. Но тот же конфликт снова! тот же файл!. Я делаю это снова, git add, git rebase --continue, и затем все повторяется снова, пока я не повторю это для каждой переадресации.

Почему rebase заставляет меня повторять одно и то же разрешение конфликта снова и снова?

4b9b3361

Ответ 1

Вы хотите git rerere, который записывает разрешения конфликтов для вас. Лучшее введение в это я увидел из этой статьи в блоге. На практике, когда вы выполняете rebase, вы в конечном итоге останавливаетесь по-прежнему, но вам нужно только проверить, что конфликт слияния остается разрешенным, а затем git add он и продолжается.

Ответ 2

Вы не должны повторять один и тот же конфликт снова и снова. Rerere не поможет вам здесь. Это просто означает, что кодовая база, которую вы пытаетесь воспроизвести, переписывается, настолько отличается, что каждая фиксация требует вашей помощи для ее настройки. Это одна из причин одобрения слияния над rebase. Ребаза должна использоваться только в случае необходимости, а не в части вашего обычного рабочего процесса. Rerere поможет намного больше в рабочем процессе слияния / reset. Вот мой рабочий процесс, который позволяет избежать перезагрузки: http://dymitruk.com/blog/2012/02/05/branch-per-feature/

Один из способов облегчить боль - использовать интеллектуальную программу слияния, например Beyond Compare. Он синтаксис осведомлен и позволит решить довольно много конфликтов, которые Git (по праву) откажется сделать для вас. Много раз эти инструменты при вызове даже не открывают свой пользовательский интерфейс, не решают проблему и не позволяют вашей команде git mergetool перейти к следующему конфликту. Не забудьте установить для "trust mergetool exit code" значение true.