2016-08-29 3 views
2

Я удалил некоторые файлы локально, которые были сгенерированы машиной, но также отслеживались. После удаления некоторое время назад я сделал несколько коммитов и сделал запрос на тяну.Удалить удаленные файлы из запроса на github pull?

Однако участники хотят, чтобы я удалил эту часть удаления из фиксации.

Как это исправить?

В большинстве случаев я получаю эту ошибку: (GIT Р.М., мерзавец фотографии и т.д.)

error: pathspec 'filepath' did not match any file(s) known to git.

Файл был удален локально.

ответ

1

Найти коммита, где вы удалили файл:

git log -n1 -- path/to/file 

Восстановить файл из одного фиксации до одного, который уничтожал его:

git checkout SHA1~1 -- path/to/file 

Повторите эти действия для каждого удаленного файла, который вы хотите восстановить.

Зафиксируйте и нажмите на ветку, чтобы обновить запрос Pull (добавление одного фиксации).

1

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

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 

Теперь ваш запрос тянуть обновляется и следует надеяться пройти проверки.

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