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

Git Объединить конфликт - Удаленный файл удален, локальный файл изменен

Я объединился в изменениях из другой ветки, но у меня возникают конфликты, потому что файл удален на удаленной ветке, но имеет изменения в локальной ветке.

Я хотел бы удалить файл - я попробовал git rm path/to/file, но он говорит file: needs merge. Каков наилучший способ удаления файла и фиксации слияния?

4b9b3361

Ответ 1

Попробуйте использовать параметр --force:

git rm --force <file>

Если вы хотите сохранить файл в файловой системе:

git rm --cached <file>

Ответ 2

  Я попытался git rm path/to/file, но там написано: needs merge

Вы больше не увидите это сообщение об ошибке с Git 2.23 (Q3 0219, семь лет спустя)

"git rm" разрешает конфликтующий путь, используемый для утечки внутреннего сообщения "needs merge" перед тем, как фактически удалить путь, который сбивал с толку.
Это было исправлено.

Смотрите коммит b2b1f61 (17 июля 2019 г.) от Джунио С. Хамано (gitster).
(Merged by Junio C Hamano -- [TG45] -- in commit 5e9d978, 25 Jul 2019)

rm: разрешение путем удаления не является событием, достойным предупреждения

При разрешении конфликта на пути в пользу его удаления, используя "git rm" - это стандартный способ сделать это.
Однако пользователь получает сообщение "needs merge" во время этой операции:

$ git merge side-branch
$ edit conflicted-path-1
$ git add conflicted-path-1
$ git rm conflicted-path-2
conflicted-path-2: needs merge
rm 'conflicted-path-2'

Удаление с помощью "git rm" выполняется, но непосвященный пользователь может показаться странным:
"needs merge? Так что мне нужно разрешить конфликт прежде чем удастся удалить его??? "

Сообщение приходит от "update-index --refresh", который называется внутренне, чтобы убедиться, что "git rm" знает, какие пути чистые и какие пути являются грязными, чтобы предотвратить удаление измененных путей относительно индекса без опции "-f".

Мы как-то закончили тем, что не подавили это сообщение, которое просочилось на поверхность пользовательского интерфейса.

Используйте тот же механизм, который используется "git commit", "git describe" и т.д. Для подавить сообщение.