Remove file from a commit in Mercurial
hg uncommit somefile.txt
does exactly this for me.
Like plain git reset
, it removes the change from the commit but leaves the file contents unchanged, so now hg diff
shows the change you just uncommitted.
The uncommit
command claims to come from the uncommit
extension, but may actually be coming from the evolve
extension, I admit I'm not 100% sure!
Try out:
hg forget somefile.txt
hg commit --amend
If the file was new (i.e. you had used hg add).
If that file already existed try:
cp somefile.txt somefile.txt.bak
hg revert somefile.txt --rev .~1
hg commit --amend
Which is basically telling mercurial to revert
the file (somefile.txt
) back to the state it was one revision ago (--rev .~1
).
Just make sure to back up the file you are reverting before entering the command so that you do not lose your changes. I was under the impression mercurial does this automatically for you, but after testing it quickly I'm not so sure.