* Git screwup with reset
@ 2009-05-18 14:58 jake varghese
2009-05-18 15:08 ` Shawn O. Pearce
2009-05-18 15:11 ` Sverre Rabbelier
0 siblings, 2 replies; 3+ messages in thread
From: jake varghese @ 2009-05-18 14:58 UTC (permalink / raw)
To: git
Hi All,
I really screwed up. I had about 2 weeks worth of code I was working
on that got reset right out before commit.
Here's what happened.
1. I coded for 2 weeks and didnt commit or add anything (yes, i
know, real stupid)
2. I was attempting to commit today and added the files.
3. I realized a couple of files were added that i didnt want and
werent being matched to the gitignore because i spelled them wrong.
I fixed the gitignore file but the files still showed up, Im guessing
because i used "git add ." before.
4. Then i ran git reset --hard because i just wanted to undo the
add. Clearly this was where everything fell apart.
5. I lost 2 weeks worth of code.
That's basically how it happened.
When I run git fsck --lost-found i get a whole bunch of dangling
objects. If I run git show on those objects it shows me the code
that was lost. Anyone know of a way to get this stuff back. I tried
rebasing and merging and neither worked.
Thanks in advance,
Jake Varghese
OrgSync Inc.
866.ORG.SYNC
jake@orgsync.com
www.orgsync.com
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Git screwup with reset
2009-05-18 14:58 Git screwup with reset jake varghese
@ 2009-05-18 15:08 ` Shawn O. Pearce
2009-05-18 15:11 ` Sverre Rabbelier
1 sibling, 0 replies; 3+ messages in thread
From: Shawn O. Pearce @ 2009-05-18 15:08 UTC (permalink / raw)
To: jake varghese; +Cc: git
jake varghese <jake@orgsync.com> wrote:
> When I run git fsck --lost-found i get a whole bunch of dangling
> objects. If I run git show on those objects it shows me the code that
> was lost. Anyone know of a way to get this stuff back. I tried
> rebasing and merging and neither worked.
For each of those dangling blobs:
git cat-file blob $sha1 >$path
where you need to manually figure out the relationship between
$sha1 and the local $path within your project. Git doesn't have
that relationship data, because you never made a commit.
Oh, and next time, commit like every hour, or more frequently than
that. At worst, you'll need to do a "git merge --squash" near the
end to flatten out your silly "save my work" checkpoints and draft
a more useful commit message for your coworkers. But at least you
lose less when you have a "git reset --hard" fat finger accident.
--
Shawn.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: Git screwup with reset
2009-05-18 14:58 Git screwup with reset jake varghese
2009-05-18 15:08 ` Shawn O. Pearce
@ 2009-05-18 15:11 ` Sverre Rabbelier
1 sibling, 0 replies; 3+ messages in thread
From: Sverre Rabbelier @ 2009-05-18 15:11 UTC (permalink / raw)
To: jake varghese; +Cc: git
Heya,
On Mon, May 18, 2009 at 16:58, jake varghese <jake@orgsync.com> wrote:
> Anyone know of a way to get this stuff back.
Make a backup copy of that .git directory, so that whatever you do you
won't lose that work ;). Also, the reason you can't merge or rebase
that hash is because it's the hash of a tree or a blob, not a commit.
You can use git commit-tree [0] to create a commit from your lost
tree, but that works only if you have a tree (for just a blob you can
use git cat-file [1])
[0] http://www.kernel.org/pub/software/scm/git/docs/git-commit-tree.html
[1] http://kernel.org/pub/software/scm/git/docs/git-cat-file.html
--
Cheers,
Sverre Rabbelier
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2009-05-18 15:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-18 14:58 Git screwup with reset jake varghese
2009-05-18 15:08 ` Shawn O. Pearce
2009-05-18 15:11 ` Sverre Rabbelier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).