say edited file
echo "hi" > someversionedfile.txt //then staged file git add . git status <console reads> changes committed new file: someversionedfile.txt now make additional changes files
echo "hi again file" >> someversionedfile.txt //then restage file these changes git add . git status <console reads> changed not commited modified file: someversionedfile.txt question: how revert last staged version? possible since wasn't committed?
you can this, there's no single simple command you.
when git add, file has been added repository, there nothing pointing except index. when second git add, new (version of the) file gets added repository, , link between index , first version of file replaced new link. first object still there.
you can use git fsck --dangling list of blob objects in repository not referenced anything, you'll have go through them 1 one git show, git cat-file, etc. determine file want. once find right file, can git show hash > somefile.txt (and maybe git add somefile.txt).
of course, if you've done git prune, git gc, etc. since second git add, may have removed original file repository.
here's quick example:
$ git init foo initialized empty git repository in foo/.git/ $ cd foo $ echo blah > foo.txt $ git add foo.txt $ echo blarg > foo.txt $ git add foo.txt $ git fsck --dangling checking object directories: 100% (256/256), done. dangling blob 907b308167f0880fb2a5c0e1614bb0c7620f9dc3 $ git show 907b308167f0880fb2a5c0e1614bb0c7620f9dc3 blah $
Comments
Post a Comment