Как отменить удаление файла, ранее удаленного в истории git?

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

Сначала я подумал, что это противоположность Как сделать Я удаляю конфиденциальные файлы из истории git, но на самом деле я не хочу вставлять файл в историю, а просто удаляю удаление из истории.


person Tobias Kienzler    schedule 30.06.2010    source источник
comment
Git отслеживает не намерение, а только контент. Если файл существует в предке и удаляется в дочернем коммите, то «удалить удаление из истории» и «повторно вставить в историю» означают одно и то же: убедитесь, что файл отображается в дочернем и его дочерних элементах. .   -  person Chris Johnsen    schedule 01.07.2010


Ответы (2)


Я понял:

git tag originalHead # just in case
git rebase -i <id of the parent of the commit that deleted the file>
# change pick to edit for that commit
git checkout <id of the previous commit> <filename> # thanks for reminding, kubi
git commit --amend
git rebase --continue
git tag -d originalHead

edit, к сожалению, при этом все теги останутся на старой шкале времени, см. здесь

person Tobias Kienzler    schedule 30.06.2010
comment
Шутки в сторону! git rebase -i ‹идентификатор родительского коммита, который удалил файл› Это спасло мне жизнь - person HV Sharma; 19.03.2020

person    schedule
comment
спасибо, но это только восстанавливает его. Я хочу, чтобы история выглядела так, как будто файл никогда не удалялся - person Tobias Kienzler; 30.06.2010