Если я правильно понял вашу проблему, вы создали ветвь функции, содержащую некоторое количество коммитов, в одном из которых вы удалили некоторые файлы, которых у вас не должно быть. В этом случае интерактивная перебаза должна быть жизнеспособным вариантом для исправления этой проблемы. В интерактивной перестановке вы можете изменить (помимо всего прочего), что произошло при каждом фиксации в истории вашей ветки функций. В вашем случае вы хотите отменить удаление определенных файлов. Вот как вы можете это сделать:
git checkout feature
git rebase -i HEAD~4 # replace 4 with however far back is the commit
# containing the deletions
Это должно вызвать окно, показывающее самые последние пять коммиты, сделанные в feature
отрасли:
pick 07c5abd message for commit A
pick dl398cn message for commit B
pick 93nmcdu message for commit C
pick lst28e4 message for commit D
pick 398nmol message for commit E
Здесь первый коммит показано является старейшей, а последнее - последнее. Вы заметите, что по умолчанию используется pick
. Найти фиксации (скажем, совершить B
), который является тот, в котором вы случайно удалили файлы, и замените pick
с edit
, оставив вас с этим:
pick 07c5abd message for commit A
edit dl398cn message for commit B
pick 93nmcdu message for commit C
pick lst28e4 message for commit D
pick 398nmol message for commit E
Затем сохраните файл, который должен закрыть это окно и перебазироваться должен начаться. Когда Git достигает фиксации B
, он должен сделать паузу, давая вам изменения, чтобы изменить то, что вы сделали. Введите git status
, и вы увидите файлы, которые вы удалили. Чтобы восстановить удаленный файл просто использовать:
git checkout HEAD path/to/deleted/file
После завершения восстановления удаленных файлов, типа:
git rebase --continue
Это должно эффективно удалить делеции из вашей feature
ветви. Существует один окончательный причуда здесь, который является то, что, так как вы переписали историю feature
, вы должны заставить толкать его в хранилище с помощью:
git push --force origin feature
Теперь ваш запрос тянуть обновляется и следует надеяться пройти проверки.