git rm -r удалил "игнорируемые" файлы.как я могу получить их обратно, используя git? - PullRequest
0 голосов
/ 25 июня 2018

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

У меня есть файл .gitignore с записями вроде:

reference/ 

, в котором хранится много больших файлов справочных данных для моего проекта.

Я сделал

git rm -r 

и эти файлы были удалены

Я не знал, что они исчезли, и, желая получить все обратно, использовал клиент github для «Отменить все изменения ...»

Теперь все вернулось, кроме файлов, которые были "проигнорированы".

Моя операционная система - OSX High Sierra.

Как мне их вернуть?

1 Ответ

0 голосов
/ 26 июня 2018
$git rm --help

ИМЯ
git-rm - удаление файлов из рабочего дерева и из индекса

СИНОПСИС
git rm [-f |--force] [-n] [-r] [--cached] [--ignore-unmatch] [--quiet] [-] ...

ОПИСАНИЕ
Удалить файлы изиндекс или из рабочего дерева и индекса. git rm не удалит файл только из вашего рабочего каталога. (Невозможно удалить файл только из рабочего дерева и сохранить его в индексе; используйте / bin / rm, если вы хотитесделайте это.) Удаляемые файлы должны быть идентичны кончику ветви, и никакие обновления их содержимого не могут быть размещены в индексе, хотя это поведение по умолчанию может быть изменено с помощью опции -f.Когда задано --cached, промежуточное содержимое должно соответствовать либо кончику ветви, либо файлу на диске, что позволяет удалить файл только из индекса.

Поэтому, когда вы удалилифайлы с использованием git rm файлы уже были в индексе или в истории.В противном случае Git не удалил бы их.

Вы не можете обвинять git в том, что он сказал.


, чтобы ответить на ваш вопрос:

  • Если файлы имеют индекс в индексе(и еще не коммит) ты потерян.git не может помочь.

  • Если ваши файлы уже зафиксированы, вы можете извлечь их из предыдущего коммита:

    git checkout HEAD^ path/to/deleted/file
    

    , это автоматически добавит их в индекс сновапоэтому вы должны удалить их из только индекс , используя

    git rm --cached path/to/deleted/file
    
...