Ошибка Git при фиксации после слияния-фатальная: не удается выполнить частичную фиксацию во время слияния
Я побежал git pull это закончилось конфликтом. Я разрешил конфликт, и теперь все в порядке (я также использовал mergetool).
когда я фиксирую разрешенный файл с git commit file.php -m "message" Я получаю ошибку:
fatal: cannot do a partial commit during a merge.
у меня была такая же проблема раньше, и с помощью -a в commit работал отлично. Я думаю, что это не идеальный способ, потому что я не хочу фиксировать все изменения. Я хочу фиксировать файлы отдельно с отдельными комментариями. Как я могу это сделать? Почему git не позволяет пользователям фиксировать файлы отдельно после слияния? Я не мог найти удовлетворительного ответа на этот проблема.
13 ответов:
Я обнаружил, что добавление "-i " в команду commit устраняет эту проблему для меня. -Я в основном говорит ему, чтобы разместить дополнительные файлы перед фиксацией. То есть:
git commit -i myfile.php
можно использовать
git commit -iв большинстве случаев, но в случае, если он не работаетвам нужно
git commit -m "your_merge_message". Во время конфликта слияния вы не можете объединить один файл, поэтому вам нужно
- этап только конфликтный файл (
git add your_file.txt)git commit -m "your_merge_message"
у вас, вероятно, есть конфликт в чем-то, что вы не устроили для фиксации. git не позволит вам совершать вещи независимо (потому что это все часть слияния, я думаю), поэтому вам нужно
git addсоответствующий файл, а затемgit commit -m "Merge conflict resolution". Элемент-iфлагgit commitне добавлять для вас.
я получил это, когда я забыл
-mв моем git commit при разрешении конфликта слияния git.git commit "commit message"должно быть
git commit -m "commit message"
ваше слияние остановилось в середине действия. Вы должны добавить свои файлы, а затем 'git commit':
git add file_1.php file_2.php file_3.php git commitУра
как говорится в сообщении об ошибке, вы не можете сделать частичную фиксацию после слияния. Вместо того, чтобы просто
file.phpвы должны зафиксировать все изменения.Это должно работать.
git commit -m "Fixing merge"
Если вы просто хотите выбросить весь сбор вишни и зафиксировать файлы в любых наборах, которые вы хотите,
git reset --soft <ID-OF-THE-LAST-COMMIT>доставит вас туда.
что делает soft reset, это перемещает указатель, указывающий на текущую головку, на фиксацию (ish), которую вы дали, но не изменяет файлы. Жесткий сброс переместит указатель, а также вернет все файлы в состояние в этом фиксаторе(ish). Это означает, что с помощью soft reset вы можете очистить состояние слияния, но сохранить изменения в фактических файлах, а затем зафиксировать или сбросить их каждый индивидуально по своему вкусу.
во время слияния Git хочет отслеживать родительские ветви по всевозможным причинам. То, что вы хотите сделать, это не слияние, как это видит git. Вы, вероятно, захотите сделать перебазирование или вишневый выбор вручную.
для себя это произошло в SourceTree, когда я попытался совершить слияние перед разрешением всех файлов. Затем я отметил, что последний файл разрешен, и все же он все еще дал мне эту ошибку при попытке совершить. Я закрыл SourceTree и снова открыл его, а затем он совершил штраф.
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 дал вам лучшие подсказки о том, что делать в этих ситуациях.
Я решил это с помощью полностью другой подход, используя только исходный код Xcode.
фон: другая команда внесла изменения в удаленный репозиторий Git (через Beanstalk). С моей стороны, то .xcodeproj файлы пришли в другой каталог, и изменения не приняли. Позже, когда я попытался совершить, я получил ошибку конфликта дерева в Xcode.
почти невозможно исправить используя Xcode, Я заменил
.xcodeprojфайл с загруженной версией с сервера Git. Результат... проект Xcode, казалось, прояснился, однако все обновления из поврежденного Pull появлялись как изменения, которые я сделал, и были поставлены для фиксации.однако при попытке фиксации я получил ту же ошибку" fatal: не удается выполнить частичную фиксацию во время слияния", обсуждаемую здесь.
вот как я решил проблему... (Теперь, поймите, что я программист-новичок, поэтому мне может не хватить понимания... но мое невежество заставило меня найти другой способ сделать это.) Во-первых, я клонировал свою главную ветвь во вторичную ветвь и переключился на эту ветвь. Затем я создал рабочую копию и поместил каталог в эту рабочую копию за пределами исходного каталога проекта. (Я не знаю, было ли это необходимо, но это то, что я сделал, когда читал другие методы устранения неполадок.) Затем я переключил ветви на мастера, где я понял все мои поэтапные файлы (изменения для фиксации) исчезли. Чтобы убедиться, что все файлы были обновлены до последних изменений, сделанных другой стороной, я создал новую ветвь под названием ThirdBranch, которая дублировала все файлы, подтолкнула ее к серверу Git и позволила Beanstalk сравнить мою версию сервера главной ветви с ветвью ThirdBrach, которую я только что нажал (строка за строкой), и все изменения другой стороны присутствовали на моем Xcode. Это означало, что мой главный репозиторий и главный репозиторий Git были то же самое, что подтверждает, что я решил проблему с помощью Xcode, только.
Не спрашивайте меня, как, помимо того, что я только что описал... и, конечно, заполнить пробелы, которые я оставил. Я новичок в этом и я не все понимаю. Возможно, опытный программист может отделить нерелевантную информацию от релевантной и воссоздать эту технику более четко, что отчасти объясняет, почему я публикую это.
это дубликат ответа на повторяющийся вопрос, как в: Сбой Xcode Git Слияние застряло
Если это Источник Дерева, мы должны явно пометить файл как разрешенный после разрешения конфликтов. Выберите файл это было просто решено никаких конфликтов. Тогда Действия - > Разрешить Конфликты - > Пометить Resolved. Если у вас есть несколько файлов, сделайте то же самое для всех. Соверши сейчас же.


Comments