Ошибка git при коммите после слияния - фатально: невозможно выполнить частичную фиксацию во время слияния - PullRequest
253 голосов
/ 29 апреля 2011

Я запустил git pull, который закончился конфликтом. Я разрешил конфликт и теперь все в порядке (я также использовал mergetool).

Когда я фиксирую разрешенный файл с git commit file.php -m "message", я получаю ошибку:

fatal: cannot do a partial commit during a merge.

У меня раньше была такая же проблема, и использование -a в коммите работало отлично. Я думаю, что это не идеальный способ, потому что я не хочу совершать все изменения. Я хочу зафиксировать файлы отдельно с отдельными комментариями. Как я могу это сделать? Почему git не позволяет пользователям фиксировать файлы отдельно после слияния? Я не смог найти удовлетворительного ответа на эту проблему.

Ответы [ 15 ]

3 голосов
/ 05 мая 2014

Для меня это произошло в SourceTree, когда я пытался зафиксировать слияние перед разрешением всех файлов.Затем я отметил, что последний файл разрешен, и все же он выдал мне эту ошибку при попытке зафиксировать.Я закрыл SourceTree и снова открыл его, а затем он совершил штраф.

2 голосов
/ 19 октября 2015

git commit -i -m 'merge message' не работает для меня. Он сказал:

fatal: No paths with --include/--only does not make sense.

FWIW, я получил здесь через этот связанный вопрос , потому что я получал это сообщение:

fatal: You have not concluded your merge (MERGE_HEAD exists).

Я также попробовал mergetool, который сказал No files need merging. Очень запутанно! Таким образом, MERGE_HEAD не находится в файле, который нужно объединить - ??

Наконец, я использовал этот трюк для добавления только измененных файлов (не хотел добавлять все файлы в моем дереве, так как у меня есть некоторые, которые я хочу оставить без отслеживания):

git ls-files -m | xargs git add

Тогда я наконец (!) Смог совершить и подтолкнуть вверх. Было бы неплохо, если бы git давал вам лучшие советы о том, что делать в таких ситуациях.

2 голосов
/ 29 апреля 2011

Во время слияния Git хочет отслеживать родительские ветви по разным причинам. То, что вы хотите сделать, это не слияние, как видит его git. Скорее всего, вы захотите сделать перебаз или выбор вишни вручную.

1 голос
/ 03 февраля 2019

После прочтения всех комментариев.это было мое решение:
Я должен был «добавить» его снова, чем зафиксировать:

$ git commit -i -m support.html "doit once for all" [master 18ea92e] support.html
1 голос
/ 30 мая 2017

Если оно находится в Исходное дерево , мы должны явно пометить файл как разрешенный после разрешения конфликтов. Выберите файл , который был только что разрешен без конфликтов. Затем Действия -> Разрешение конфликтов -> Отметить разрешение . Если у вас есть несколько файлов, сделайте то же самое для всех. Совершить сейчас.

...