Отменить или отменить git am --решено
Я вручную применил патч, и после того, как я сделал, я сделал следующее
git add .
git am --resolved
Я упустил из виду то, что файл rej также присутствовал и не был отслежен, но git add .
добавили все файлы в область подготовки, как и ожидалось git am --resolved
Я закончил тем, что передал свой файл rej, у которого были различия патча.
Я сделал git reset --soft HEAD^
чтобы я мог отменить коммит и просто зафиксировать файл, измененный патчем.
Но проблема в том, что сообщение о коммите и автор больше не будут извлекаться из файла патча, так как я сделал коммит git.
Как отменить разрешенный git, чтобы я мог удалить файл rej и разрешить снова, чтобы сообщения о коммитах и автор не были повреждены?
2 ответа
Похоже, что в патче только один коммит.
Самый простой способ в этом случае (только один коммит) git reset
вернуться к неверному коммиту, затем удалить лишний файл (git rm ...
) и использовать git commit --amend
, --amend
вариант говорит git commit
повторно использовать существующее сообщение и автора и сделать новый коммит из текущего индекса, отбросив старый коммит в сторону.
Если есть несколько коммитов, все содержащие .rej
файл, вам нужно будет использовать ответ Леона или что-то подобное (например, более длинная ручная перебазировка). Вы можете ограничить количество коммитов, копируемых git filter-branch
так как фильтрация копирует каждый такой коммит, что очень медленно.
Чтобы вернуться к неверному коммиту, используйте git reset --soft HEAD@{1}
как сказал Леон
Вы могли бы просто сделать
git filter-branch --tree-filter 'rm rejfile' HEAD^..
Теперь вы должны вернуться в ошибочно совершенное состояние с
git reset --soft HEAD@{1}
а затем запустить git filter-branch
команда сверху.