2

Удалил в проекте папку, в ней, допустим, 1000 файлов.

Пишу

git status  

в ответ

deleted:    "public/..."  
...  
1000 раз  
...  
deleted:    "public/..."  

Ну, понятное дело, что писать 1000 раз

git checkout -- public/...  

не серьезно.

Вот, собственно, и вопрос.
Подскажите команду для, например, удаления всего удаленного.

Nick Volynkin
  • 34,094
sepgg
  • 2,566
  • Я ничего не понял. Гит оперирует файлами, директорий для него нет как сущности, поэтому он выводит всю тысячу удаленных файлов. Для востановления папки попробуйте ее и написать (git checkout -- public), я не уверен, что сработает, но возможно. Альтернативный вариант - git checkout -- public/*, но, опять же, никогда вообще с такой потребностью не сталкивался. – etki Mar 24 '15 at 07:28
  • Не согласен с принятым ответом, т.к. он содержит ошибку и выполняет другую (более широкую) задачу. – Nick Volynkin Jul 01 '15 at 21:06

2 Answers2

3

Так вы уже удалили файлы. Теперь нужно сделать коммит и отправить на сервер.

git add . && git commit -m "Delete files" && git push

И все. Все что Вы удалили, удалится и из репозитория. Или же Вам нужно восстановить что удалили?

Nick Volynkin
  • 34,094
dlarchikov
  • 4,403
  • Да, я здорово лажал до сего момента.
    Почему то руками удалял, думал, что эти удаленные в статусе будут пока не удалишь)))
    И проверить же не судьба была.

    Всем спасибо!

    – sepgg Mar 24 '15 at 07:50
2

Как исправить

Чтобы индексировать только все удаленные файлы:

git ls-files --deleted -z | xargs -0 git rm 

Для индексирования всех удаленных + всех обновленных файлов можно использовать параметр -u:

git add -u

Потом на основе этих файлов делаете очередной коммит:

git commit -m'deleted files from blablabla'

Как удалять сразу на диске и в Git

Можно удалять файлы из рабочей директории и индексировать удаление в Git с помощью одной команды git rm:

git rm -- <file1> <file2> <file3>
git rm -r -- <directory1>
Nick Volynkin
  • 34,094