Как и большинство новых пользователей для Git, у меня была своя путаница, пытаясь расшифровать варианты использования, применимые к git merge и git rebase. Я думаю, что я, наконец, решил, что, поскольку в результате получается рабочее копирование, они дают вам то же самое. Кроме того, они оба приводят к одинаковым конфликтам. Если это неверно, предоставьте пример, чтобы рассказать мне.
С моей точки зрения, основное преимущество использования rebase вместо merge (если ваши изменения не были нажаты или вытащены) заключается в том, чтобы сохранить историю линейной. То, что я действительно не понимаю, является аргументом в пользу разработки git -rerere.
Из команд, git -rerere должен помочь вам в случае, когда вы пытаетесь разрешить конфликт, который вы ранее разрешили. Пример, который я собираюсь найти, находится в http://www.kernel.org/pub/software/scm/git/docs/git-rerere.html.
Если политика вашего проекта состоит в том, чтобы не постоянно объединять изменения с основной линией в вашей ветки темы (например, ядро linux), в приведенном выше примере говорится, что для создания коммандов с "выбросом". По существу, объедините мастера в свою тему, запустите тесты, чтобы убедиться, что все все еще работает, затем выполните "git reset --hard HEAD ^", по сути бросая фиксацию слияния. Позже, когда вы создаете еще одно "сбрасывание" слияния, git -rerere помогает вам в разрешении конфликтов, которые вы уже разрешили в сперва сбрасывании.
Может кто-нибудь объяснить, почему вместо того, чтобы справляться с проблемой создания временного коммита, разработчик вместо этого просто переустанавливает свою тему на мастер? Разве это не та точка git -rebase - получить изменения, но избежать слияния? Разве это не делает то же самое, и если предположить, что никто не изменил ваши изменения в ветке темы, не было бы это намного проще? Является ли процесс throw-away-merge + git -rerere действительным только для случая, когда ваши изменения были нажаты/вытащены?
Один последний вопрос - цитируется Линус: "Но если я увижу много" Линий слияния ветвей "в ваших журналах, я не собираюсь отвлекаться от вас, потому что у вашего дерева, очевидно, было случайное дерьмо, не должно быть там...". У Linus также была бы проблема с постоянными перестановками?