Git rebase после слияния запутался в удаленном файле

В моем репозитории Git есть два файла, alphaи beta, с одинаковым содержимым.

Если я удалю alphaв моей основной ветке и отредактирую ее в своей функциональной ветке, то при объединении master с feature я буду предупрежден о конфликте. Предположим, я решил это, удалив alpha.

Если я затем перебазирую свою ветвь функций на мастер, используя git rebase master, alphaбудет удален, но изменения, которые я сделал в alphaв ветке функций, теперь применяются к beta! Я получаю предупреждение о конфликте, но он благополучно разрешается автоматическим слиянием -без блокирования фиксации для просмотра.

Интересно, что если я делаю git rebase -iи просто принимаю значение по умолчанию, betaне редактируется, и я могу разрешить тот же конфликт, который я разрешил во время слияния.

Тогда три связанных вопроса:

  1. Почему Git считает, что изменение, которое я применил к одному файлу, должно быть применено к другому, если другой не был отредактирован какой-либо фиксацией?
  2. Как мне избежать подобной ситуации?
  3. Почему поведение интерактивной перебазировки отличается, даже если я использую параметры по умолчанию?

Я использую Git 1.7.9 на Cygwin на Win7. Я поместил стенограмму на pastebin , показывающую, что это начинается с git initв пустом каталоге, если кто-то хочет увидеть подробности для себя (, я не размещаю его здесь из-за длины ).

7
задан me_and 16 August 2012 в 10:34
поделиться