Question

Say I type hg add in Mercurial, and there a bunch of untracked files in my working directory that are not ignored. What is the easiest way to un-add all those files without explicitly typing the name of each file?

Can I just un-add them all with one command?

Was it helpful?

Solution

Preface

You must always ask questions, which contain as much information as possible. Because now your question, depending from some conditions, may have totally different answers.

Case One - no local modifications in already versioned files, only added (and not committed) files

hg revert will return your working directory to the state after the last commit, undoing all changes it it.

Case One - local edits, which you want to save and occasionally added files

  1. Read about filesets in Mercurial.
  2. Use fileset in the hg forget command, something like hg forget "set:added()".

OTHER TIPS

Use hg revert or hg forget on the files (both do the same for a file you ran hg add on). To avoid typing out the filenames, you can use a fileset like this:

$ hg revert "set:added()"

This will revert the file back to how it looked in the working copy parent revision, i.e., it will become unknown again.

hg revert -r .^ path-to-file will revert the commit from the commit-set. then commit and submit (if using jelly fish) and you'll see the files removed from the changeset. I don't know why .^ works yet, but somebody will probably know.

You could always just re-clone your repository and then replace (delete existing and then copy new) the .hg directory in your working folder with the one from the fresh clone... (assuming you have no pending commits..)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top