49

I've got a repository on GitHub (http://github.com/hrickards/PHP-Crypto) for a little project me and a couple of others are working on. My development environment is Aptana Studio, and I use the EGit plugin as Aptana is basically Eclipse underneath. Today the designer sent the HTML and CSS for the website with the images in a folder named img. Previously the images were in a folder called images. Thinking nothing of it and being too lazy to update the CSS and HTML, I simply kept the images in the img directory and commited to Git. However, the GitHub web interface shows both the img and images directories, with the images directory being empty. I've tried deleting the images directory with git rm -r images and git rm images, and even mkdir images; git add images; git rm -r images but whatever I try I get the same result: fatal: pathspec 'images' did not match any files.

Has anyone got any advice on how to remove images, or am I misunderstanding Git or something?

4 Answers 4

89

This is what I use, and I think you'll want to as well. It's close to the other answers, but instructs git to NOT change the local files.

git rm -r -f --cached DirectoryName
  • -r : recursive
  • -f : force
  • --cached : apply ONLY to index (staging area). Git leaves the local copies alone.
Sign up to request clarification or add additional context in comments.

git rm -r -f . deleted all my local copies of files excluding files declared in .gitignore. After a heady and sweety hour I managed to recover them with git checkout HEAD .. So use this command carefully. Of course I had forgotten the --cached argument part.
41

Git does not store any information about the directory, just the files within it. So, you cannot add or remove directories themselves; if you say git add images, Git will add all of the files within that directory (that don't match the ignore list).

Generally, the only way for there to be an empty directory is if it actually contains a file, usually a hidden file like .gitignore.

You said that you see an images directory on GitHub, but I'm not seeing it in the repo that you linked to. Are you sure it's there, and not just an empty directory on your disk? If it's just an empty directory on your disk, you can just remove it using rm images; Git doesn't need to know about it.

You're right - it's not there now. It definitely wasn't on my disk, so I can only assume my browser, Chrome, had cached the page or something even when I refreshed it. It has a habit of doing that. Thanks for the help anyway!
@hrickards Just a tip, if you want to force chrome (I think it works in other browsers too but I didn't test it) to reload the page completely, press [CTRL]+F5.
38

try this:

git rm -r -f DirectoryName

it removes physically!
git rm -r -f --cached DirectoryName <<< use this to leave the local copy alone!
@Sk606: could you post it as a separate answer? You would get upvotes (at least from me), because this is the real solution :)
Sure, added one with some bonus explanation
3

The linked GitHub repository does not show the images directory.

Git does not store empty directories for technical reasons, so just try rm images and remove the images directory from your local directory hierarchy.

Hi, as said above I think Chrome must have cached the page even when I F5'ed it or something. Thanks for the help anyway!

Your Answer

Draft saved
Draft discarded

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.