Как разрешить конфликт перебазирования, когда файл был удален с мастера?

От master, то Aфилиал был разветвленным. Затем несколько коммитов (чтобыmaster) позже, B филиал был разветвленным.

Владелец A внес изменения в файл fname. ВладелецB удалено fname все вместе.

Потом, B был перебазирован и объединен с master. Сейчас,Aдолжен быть перебазирован и объединен. Но сейчасAу владельца возникает конфликт с файлом fname, говоря это:

CONFLICT (modify/delete): fname deleted in HEAD and modified in "commit msg". Version "commit msg" of fname left in tree.

Обычно конфликты разрешаются путем редактирования промежуточного файла, git add fname это а потом git rebase --continue процесс.

Но как разрешить конфликт удаленного файла? Конечным результатом должно быть удаление файлов.

1 ответ

Решение

В этом случае вы можете просто удалить файл не с помощью git rm но только с rm.

rm fname
git add fname
#Fix any other conflict
git rebase --continue

Каким бы способом вы не оставили свой файл, он будет использоваться в новом создаваемом коммите.


Что происходит:

  1. Перебазирование было прервано из-за конфликта.
  2. Если вы проверите журнал, ваш текущий HEAD является главой master.
  3. У вас есть файл, которого нет в этой HEAD. Это означает, что вы не можете спроситьgit rm потому что этот файл не находится под контролем версий.
  4. Мы просто удаляем файл, как если бы вы сделали новый файл, который не хотите фиксировать.

Если единственное изменение в текущей фиксации было внесено в этот удаленный файл, вы получите следующую ошибку:

`No changes - did you forget to use 'git add'?`

Это потому, что фиксировать нечего (вы только что удалили файл, которого не было в git). В этом случае вы можете git rebase --skip вместо того --continue.

Другие вопросы по тегам