Они не должны быть [удалены].
Да, они должны.Коммиты являются историческими государствами.Вы проверяете состояние до того, как они были совершены, поэтому они не должны быть там.Представьте, что вы работаете над своим проектом через год.Половина файлов была переименована, есть десятки новых файлов, и по какой-либо причине вы решили проверить сегодняшнюю версию.Конечно, вы не хотели бы, чтобы все эти десятки файлов просто сидели и загромождали!Они не принадлежат там!(И, конечно, «неотслеживаемые файлы ... добавленные с последним коммитом» не имеют никакого смысла - если вы зафиксировали их, они теперь отслеживаются.)
Если файлы действительно должны Вы были в старом коммите, вероятно, что вы хотите сделать, это использовать интерактивный ребаз (git rebase -i <start commit> <branch>
, дальнейшие инструкции предоставлены git), чтобы раздавить пару коммитов вместе.Возможно, вам придется изменить порядок коммитов, отодвинув коммит «добавить эти файлы» назад в историю, к которой он принадлежит.Или, если вы заметили это сразу после того, как забыли добавить файлы, просто добавьте их и используйте commit --amend
для изменения предыдущего коммита вместо создания отдельного.
Наконец, если вы действительно получите этоустановить в истории таким образом (другие вытащили, так что вы не хотите перебазировать / изменить), вы можете проверить старый коммит, а затем извлечь файлы из нового коммита:
git checkout <old-commit>
git checkout <new-commit> file1 file2 dir1 dir2/file3 ...