Bummer! This is just a preview. You need to be signed in with a Basic account to view the entire video.
Removing Files4:14 with Jay McGavren
Removing a file from your working directory is not the same as removing it from your Git repo. In this video, we'll learn about the "git rm" command.
Removing a file from the working directory
<h1>Check out our tin medals!</h1> <p>Medallion: $10</p> <p>Ribbon: $50</p>
- We've added a
tin.htmlfile showcasing the store's new tin medals.
- If we run
git status, we'll see the file is untracked.
- So let's add it:
git add tin.html
- And then we'll commit it:
git commit -m "Add tin medals"
- But suppose we later learned that customers weren't too pleased with the new tin medals, and we've decided to drop the product.
- We can delete the file from our terminal using the
rmcommand, which stands for "remove":
Removing a file from Git
- If we run
git status, it still shows the deleted file:
$ git status # On branch master # Changes not staged for commit: # (use "git add/rm <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # deleted: tin.html # no changes added to commit (use "git add" and/or "git commit -a")
- It shows that the
tin.htmlfile has been deleted, but it shows that in the "Changes not staged for commit" section.
- We can make the deletion of
tin.htmlpart of a commit by using the
git rmis set up to work much like the plain
rmcommand, so it's much like taking our previous command and sticking
gitin front of it:
git rm tin.html
- Let's run
- ...and we'll see the deletion of
tin.htmlis listed in the "Changes to be committed" section now.
$ git status # On branch master # Changes to be committed: # (use "git reset HEAD <file>..." to unstage) # # deleted: tin.html #
- Next, we can commit as usual:
git commit -m "Remove tin medals"
- Now we can run
- ...and this time it will show the working directory is clean.
$ git status # On branch master nothing to commit, working directory clean
- And if we run
ls, we'll see that the
tin.htmlfile is still gone.
- By the way, we didn't need to run
rm tin.htmlas a separate step.
git rmwill remove the file from the working directory for you, if it exists.
Previously, we've shown you how to set up a Git repository and commit files to it.
But with just the commands you know now, when you commit a file,
well you're committed.
If you decide you need to delete or
move a file, you can do it in your working directory.
But you can't do it in the Git repo.
If you staged the wrong file, we haven't shown you how to unstage it.
In these next few videos, we'll fix all that and more.
We'll show you how to delete or
move files in the get repo as well as your working directory.
You'll learn how to unstage files that you've accidentally staged.
We'll help you reset a file's contents back to the way they looked
after your last commit.
We'll show you how to bring back a file that you've accidentally deleted.
And if you decide you don't like the changes you made in the commit,
we'll show you how to undo that commit.
This is the good stuff.
In these lessons you'll begin to see the real power of Git.
Let's get started.
We've added the tin.html file showcasing the store's new tin medals.
If we run git status, we'll see the file is untracked.
So let's add it.
Git add tin.html, and then we'll commit it,
git commit -m "Add tin medals".
And we close our editor, satisfied with a job well done.
But suppose we later learn that the customers weren't too pleased with the new
tin medals, and we've decided to drop the product.
If we run the ls command,
it will show the tin.html file here in our project directory.
We can delete the file from our terminal using the rm command, which stands for
remove, rm tin.html.
Just like ls, the rm command isn't part of Git, but
it is standard on all Unix-like systems, so it's worth learning how to use.
See the teacher's notes if you want more info.
Running ls again will show that the tin.html file is gone.
But the tin.html file is being tracked by Git.
Will deleting the file from our working directory
also delete it from the repository?
Let's try our trusty git status command to find out.
It shows that the tin.html file has been deleted, but
it shows that in the changes not staged for commit section.
Why is that?
In Git, commits don't just add or modify files, they can delete them as well.
This is important because repositories can be shared across multiple computers.
When you decide to remove a file from your project, you don't want that file to be
left sitting in your coworker's copy of the project.
You want it to be deleted from your coworker's machine, too.
Making file deletions part of a commit ensures that the copies of your Git
repository will have those deletions applied, too.
And by the way, in case you're worried about others using this feature to delete
files from your machine, there are ways to undo the deletion of a file,
even after you've committed the deletion.
We'll see one way in an upcoming video.
So how can we make the deletion of tin.html part of a commit?
The key is to use the git rm command.
Git rm is set up to work much like the plain rm command.
So it's much like taking our previous command and
sticking the word git in front of it, git rm tin.html.
Let's run git status again.
And we'll see the deletion of tin.html is listed in the changes to be
committed section now.
Next, we can commit as usual,
git commit -m, "Remove, tin medals".
Now we can run git status again, and
this time it will show that the working directory is clean.
And if we run ls, we'll see that the tin.html file is still gone.
By the way, we didn't need to run rm tin.html as a separate step.
Git rm will remove the file from the working directory for you, if it exists.
You need to sign up for Treehouse in order to download course files.Sign up