Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос нашим менторам. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Рабочая директория (Working Directory)

После клонирования hexlet-git внутри мы можем увидеть директорию .git и добавленные нами файлы. Что произойдет если попробовать удалить один из файлов?

hexlet-git$ rm PEOPLE.md
hexlet-git$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add/rm <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
    deleted:    PEOPLE.md

no changes added to commit (use "git add" and/or "git commit -a")

Git сообщает о том, что файл был удалён, и предлагает команды для восстановления или фиксации (коммита) изменений. Здесь стоит остановиться и немного погрузиться в то, как работает git. Откуда он вообще знает, что файл был удалён?

Внутри директории проекта, мы видим файлы проекта с одной стороны и директорию .git с другой. Репозиторием является именно директория .git. Она хранит всю информацию о том, какие были изменения, а также сами изменения. А вот всё, что находится снаружи, это так называемая рабочая директория (working directory). Эти файлы (и директории, если они есть) извлекаются из .git в момент клонирования. Каждый раз, когда мы производим изменения в рабочей директории, git сравнивает изменённые файлы с файлами внутри .git, то есть их состоянием на момент последнего коммита. Если есть изменения относительно последней зафиксированной версии, то git сообщает нам об этом в выводе git status.

В этом очень легко убедиться, если последовать совету git в выводе выше и восстановить удалённый файл:

hexlet-git$ git restore PEOPLE.md
hexlet-git$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

# Сам файл вернулся на место таким, каким он был на момент последнего коммита

Можно удалить всю рабочую директорию целиком и потом без проблем восстановить её. Так мы достигаем важной цели — делаем возможным быстрое восстановление последней версии кода, если изменения, которые мы делали, нас больше не устраивают. Или мы можем закоммитить их, если это нужно:

hexlet-git$ rm PEOPLE.md
# Любое изменение обязательно добавлять в индекс 
hexlet-git$ git add PEOPLE.md
hexlet-git$ git commit -m 'remove PEOPLE.md'
[master e15afd2] remove PEOPLE.md
1 file changed, 1 deletion(-)
delete mode 100644 PEOPLE.md
# Теперь этот файл пропал из рабочей директории

Обратите внимание на важную деталь. Независимо от того, удаляем мы файл, добавляем или меняем, процедура выполнения коммита не меняется. После изменений всегда делается git add, который подготавливает изменение к коммиту (а не добавляет файл!), и после этого выполняется коммит.

Кстати, у git есть команда git rm, которая объединяет в себе удаление и подготовку к коммиту:

hexlet-git$ git rm PEOPLE.md
# равносильно rm + git add

Самостоятельная работа

  1. Выполните все шаги из урока
  2. Удалите файл NEW.md и зафиксируйте изменения
  3. Добавьте файл INFO.md с текстом git is awesome! и зафиксируйте изменения
  4. Залейте изменения на Github с помощью git push
  5. Обновите страницу репозитория на Github и обратите внимание на произошедшие изменения

<span class="translation_missing" title="translation missing: ru.web.courses.lessons.mentors.mentor_avatars">Mentor Avatars</span>

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят менторы из команды Хекслета или другие студенты.

Зарегистрироваться

или войти в аккаунт

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 115 курсов, 2000+ часов теории
  • 800 практических заданий в браузере
  • 250 000 студентов

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Rambler
Логотип компании Bookmate
Логотип компании Botmother

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг».