Предыдущий ролик Следующий ролик  

Видео урок: Удаление неотслеживаемых файлов

Git: обучение основам

Чтобы завершить нашу дискуссию о том, как мы можем отменить сделанные изменения, давайте рассмотрим самое последнее, то есть, как мы можем удалить неотслеживаемые файлы из рабочей директории. Идея состоит в том, что если у нас есть много файлов, добавленных в рабочую директорию, которые не отслеживаются и которые нам не нужны, мы просто хотим от них избавиться. Ведь есть же простой способ сделать это? Мы просто можем взять и удалить их один за другим, но Git дает нам простой и понятный способ взять и выбросить все эти файлы. Особенно, если у вас есть вещи типа файлов с логами, заархивированные директории, скомпилированный код, все те вещи, что не нужны в репозитории, и вы также хотите избавиться от них в рабочей директории.

Для этого мы можем использовать команду git clean. Давайте создадим несколько простых файлов. Заходим в TextMate, и давайте просто создадим новый файл, вставим в него Junk и сохраним, назовем файл junk1, отправляем на десктоп, нажимаем Save As, и этот называем junk2, и еще раз Save As, и это называем junk3. Закрываем. Теперь у нас есть три этих файла, и мы добавляем их в рабочую директорию. Если теперь мы напишем git status, мы увидим, что они являются не отслеживаемыми файлами.

И мы хотим от них избавиться. Для этого нам нужно всего лишь сказать git clean. git clean сам по себе ничего не делает. Он скажет, что ему нужна либо опция -n, или опция -f. -n - это тестовый запуск, давайте сначала испробуем ее, git clean -n, и она говорит нам, что не будет удалять папоку explorers. Не волнуйтесь, о директориях мы поговорим позже. Эта команда говорит, что удалит junk1.txt, junk2.txt и junk3.txt, то есть она называет нам файлы, которые удалит. Это то, что делает опция -n.

git clean -f заставляет их запуститься, и на самом деле, нам нужно добавить этот специальный флажок, потому что она будет разрушительной, она собирается выбросить все, чего нет в репозитории. Если бы что-то было в буфере, например, junk1.txt, и мы написали git clean -f, она бы удалила junk2 и junk3, но не junk1.

Junk1 находится в буфере, а не в рабочей директории, то есть он не выбрасывается. git reset HEAD для junk1.txt, и теперь если мы напишем git clean с опцией -f, он также будет выброшен. git status пустой. Если мы посмотрим, мы увидим, что всех трех файлов нет. Итак, git clean - очень простая команда, особенно по сравнению со всем тем, с чем мы имели дело касательно сброса. У нее единственная цель, а именно, выбросить не отслеживаемые файлы.

Но будьте осторожны все же при ее использовании, потому что она удалила все три файла. Они не были сохранены в репозитории и буфере. Если мы выбросим их из рабочей директории, их не будет нигде, они будут навсегда удалены.