Re: Corrupted git repository?
From: Piotr Krukowiecki <hidden>
Date: 2016-06-15 22:50:34
On Tue, Feb 15, 2011 at 9:00 PM, Junio C Hamano [off-list ref] wrote:
Piotr Krukowiecki [off-list ref] writes:quoted
it looks like my git repository got corrupted today. git status shows no changes, git cherry-pick says "error: Your local changes to the following files would be overwritten by merge:",with some paths, or without naming any path?
With one path: $ git status # On branch master nothing to commit (working directory clean) $ git cherry-pick 7d193bb0c1f14908361d9d9d5e30f0c12d5f2c2f error: Your local changes to the following files would be overwritten by merge: <<PATH>> Please, commit your changes or stash them before you can merge. Aborting $ git status # On branch master nothing to commit (working directory clean) 7d193bb comes from trunk, master was reset to a branch, the <<PATH>> is a file that was not changed in the commit, git clean -n -- <<PATH>> does not show anything They should not have "assume unchanged" bit because I did git update-index --no-assume-unchanged --verbose -- <<PATH>>
quoted
git fsck starts checking objects but hangs on one "Checking tree"I take it that you are talking about "git fsck -v". Is it really "hangs", or just "takes a long time"?
I was too hasty - fsck finished fine. It just took long time for one object (a couple of minutes while other checked objects took less than second). It only printed several dangling objects: $ git fsck dangling tree 0ff163a56128d95c5b88c520f68792f6f900bb18 dangling commit deb988eeb2404dd1e57c8894c3cfd93dd316aca3 dangling tree 50323779bd6c0d4eb19664a3945c6c31fe9dadd4 dangling commit 9ed87852fdf6775a3c071faec05388eda5cd5de1 dangling commit a4d09c76a1b58bbf51f2b701407493c5ed9f9b78
You mentioned that a clone is expensive so I am guessing that your repository has some huge trees or objects in general.
That's one reason, the other is that I'm using git-svn ...
The details you gave in your message are a bit sketchy to give you an exact diagnosis, but if "cherry-pick" stops with the above message and tells you the names of files that are not tracked in your current branch,
"git log -- <<PATH>>" shows two commits for this file on this branch and on trunk, and "git status" does not list the file as untracked.
I don't see there is anything unusual going on. You have these files with random contents that git does not know about, and git is refusing to lose their contents by overwriting them during the cherry-pick. After making sure that they are indeed untracked paths, if you think you can remove them (or move them away), first do so and retry cherry-pick, and then everything should be Ok.
I believe the file is tracked and is not modified? I have deleted the whole top-level directory in which the file was and run: $ git status | grep <<PATH>> # deleted: <<PATH>> $ git checkout -- <<top dir>> $ git status # On branch master nothing to commit (working directory clean) $ git cherry-pick 7d193bb0c1f14908361d9d9d5e30f0c12d5f2c2f error: Your local changes to the following files would be overwritten by merge: <<PATH>> Please, commit your changes or stash them before you can merge. Aborting -- Piotrek