Как разрешить конфликт перебазирования, когда файл был удален с мастера?
От 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
Каким бы способом вы не оставили свой файл, он будет использоваться в новом создаваемом коммите.
Что происходит:
- Перебазирование было прервано из-за конфликта.
- Если вы проверите журнал, ваш текущий HEAD является главой
master
. - У вас есть файл, которого нет в этой HEAD. Это означает, что вы не можете спросить
git rm
потому что этот файл не находится под контролем версий. - Мы просто удаляем файл, как если бы вы сделали новый файл, который не хотите фиксировать.
Если единственное изменение в текущей фиксации было внесено в этот удаленный файл, вы получите следующую ошибку:
`No changes - did you forget to use 'git add'?`
Это потому, что фиксировать нечего (вы только что удалили файл, которого не было в git). В этом случае вы можете git rebase --skip
вместо того --continue
.