2017-01-24 1 views
16

Я применением diff file из к открытым исходным кодом проекта на верхней части моего репозитория с помощью Git-ам:мерзавец: пустое имя идент (для <>) не допускается

git am -3 < /Downloads/refactorWork.diff 

но это были конфликты, и я должен был разрешать их; но после того, как разрешение конфликтов и постановка их, когда я сделал GIT утра --continue я получил:

fatal : empty ident name (for <>) not allowed 

Я посмотрел в Интернете и обнаружил, this который, казалось, быть похожей на мою проблему, но мой usename и адрес электронной почты были уже добавлены в глобальные и локальные каталоги git. Вот выход из списка конфигурации мерзавца:

[email protected]~/Documents/libo : $ git config --global --list 
[email protected] 
user.name=Rohan Kumar 
alias.l=log --oneline --graph --pretty 
credential.helper=cache 

Хотя я решил это первым совершали стадийности изменения, а затем с помощью git am --skip, я заинтересован в зная, что делает это означает, что ошибки и того, что я сделал, это правильный путь делать это, или есть лучший способ?

ответ

14

Этот файл diff представляет собой простой diff, а не то, что генерируется git format-patch. A format-patch сгенерированный diff содержит информацию об авторе фиксации, дате автора, сообщении фиксации и ... сохраняет эту информацию при создании фиксации.

Ваш простой diff не имеет этих данных, поэтому git am будет жаловаться на то, что он отсутствует.

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

+0

О, так что он жалуется на файл diff. Спасибо, что освободил мои сомнения. Я знал, что патч приведет к конфликтам. git apply потерпел бы неудачу в этом случае, поэтому я использовал git am, потому что читал, что он показывает конфликты и дает возможность их разрешить. –

+2

Поскольку у патча, у которого есть капли, он создан против отмеченного - если у вас есть те капли, доступные в вашем репозитории, вы могли бы использовать '-3', чтобы вернуться к трехстороннему слиянию, в итоге получив файлы с маркерами конфликтов для вас решить. Помимо этого вы могли бы использовать '--reject' для применения применимых к ним ханков и создавать файлы' .rej' для кусков, которые не применимы для проверки и применения вручную. Без каких-либо опций 'apply' выйдет из строя весь патч, если что-то не применяется, это правильно. Но внутренне 'git am' также использует' git apply'. – Vampire

+0

Возможно, 'git am' работал бы без ошибок, установив переменные среды' GIT_AUTHOR_EMAIL' и/или GIT_AUTHOR_NAME'. – Vampire

Смежные вопросы