Register to get access to 15+ free programming courses with interactive exercises

Working Directory Git fundamentals

After cloning hexlet-git, we can see the .git directory inside and the files we added. What happens if you try to delete one of the files?

rm PEOPLE.md
git status

On branch main
Your branch is up to date with 'origin/main'.

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 tells you when a file has been deleted and offers commands to restore or commit changes. It's worth stopping here and diving a bit into how git works. How does it even know that the file has been deleted?

Inside the project directory, we can see the project files on one side and the .git directory on the other. The repository is the .git directory. It stores all the information about what changes were made, as well as the changes themselves. But everything outside is the so-called working directory. These files (and directories, if any) are extracted from .git at the time of cloning. Every time we make a change to the working directory, git compares the modified files with the files inside .git, i.e., their state at the time of the last commit. If there are changes to the last committed version, git will tell us in the git status output.

This is very easy to see if you follow git's advice in the output above and restore the deleted file:

git restore PEOPLE.md
git status

On branch main
Your branch is up to date with 'origin/main'.

nothing to commit, working tree clean

# The file itself is back where it was on the last commit

You can delete the entire working directory and then restore it without any problems. This helps us achieve something very important - we've made it possible to quickly restore the latest version of the code if the changes we made don't suit us anymore. Or we can commit them, if necessary:

rm PEOPLE.md
# Any change must be added to the index
git add PEOPLE.md
git commit -m 'remove PEOPLE.md'

[main e15afd2] remove PEOPLE.md
1 file changed, 1 deletion(-)
delete mode 100644 PEOPLE.md
# This file is now gone from the working directory

There's something important you need to take note of. Whether we delete, add or change a file, the commit procedure does not change. After changes are made, we always perform a git add, which prepares the change for a commit (it doesn't add a file!), then we perform the commit itself.

By the way, git has a command called git rm that combines deletion and commit preparation:

git rm PEOPLE.md
# it's the same as rm + git add

Do it yourself

  1. Follow all of the steps in the lesson
  2. Delete the NEW.md file and make a commit
  3. Add an INFO.md file with the text git is awesome! and make a commit
  4. Upload the changes to Github using git push
  5. Refresh the repository page on Github and see the changes

Аватары экспертов Хекслета

Are there any more questions? Ask them in the Discussion section.

The Hexlet support team or other students will answer you.

Sign up

Programming courses for beginners and experienced developers. Start training for free

  • 130 courses, 2000+ hours of theory
  • 1000 practical tasks in a browser
  • 360 000 students
By sending this form, you agree to our Personal Policy and Service Conditions

Our graduates work in companies:

<span class="translation_missing" title="translation missing: en.web.courses.lessons.registration.bookmate">Bookmate</span>
<span class="translation_missing" title="translation missing: en.web.courses.lessons.registration.healthsamurai">Healthsamurai</span>
<span class="translation_missing" title="translation missing: en.web.courses.lessons.registration.dualboot">Dualboot</span>
<span class="translation_missing" title="translation missing: en.web.courses.lessons.registration.abbyy">Abbyy</span>
Suggested learning programs

From zero to a developer. Refunds in case you won't get a job

Frontend Developer icon
Profession
New
Development of front-end components for web applications
start anytime 10 months

Use Hexlet to the fullest extent!

  • Ask questions about the lesson
  • Test your knowledge in quizzes
  • Practice in your browser
  • Track your progress

Sign up or sign in

By sending this form, you agree to our Personal Policy and Service Conditions

Toto Image

Ask questions if you want to discuss a theory or an exercise. Hexlet Support Team and experienced community members can help find answers and solve a problem.