threads / discuss / 26508

Corrupted git repository?

Subject: Corrupted git repository?

## tl;dr

5 messages between Feb 15, 2011 and Feb 16, 2011.

replies: 4people: 4as markdown or json

Piotr Krukowiecki· Feb 15, 2011, 14:57 UTC · lore
Hi,
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:", git fsck starts checking objects but hangs on one "Checking tree"

Other commands (gc, checkout, reset) seem to work correctly.
I've tried hard resetting to HEAD, didn't help.
What can I do? Cloning is very expensive operation here.
-- 
Piotrek
Junio C Hamano· Feb 15, 2011, 20:00 UTC · re: Piotr Krukowiecki · lore

Re: Corrupted git repository?

Piotr Krukowiecki <piotr.krukowiecki.news@gmail.com> writes:
Show 5 quoted lines
> 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?
> 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"? You mentioned that a clone is expensive so I am guessing that your repository has some huge trees or objects in general.

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, 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.

Piotr Krukowiecki· Feb 16, 2011, 16:44 UTC · re: Junio C Hamano · lore

Re: Corrupted git repository?

On Tue, Feb 15, 2011 at 9:00 PM, Junio C Hamano <gitster@pobox.com> wrote:
Show 9 quoted lines
> Piotr Krukowiecki <piotr.krukowiecki.news@gmail.com> writes:
>
>> 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>>

>> 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.

Show 7 quoted lines
> 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
Johannes Sixt· Feb 16, 2011, 18:54 UTC · re: Piotr Krukowiecki · lore

Re: Corrupted git repository?

On Mittwoch, 16. Februar 2011, Piotr Krukowiecki wrote:
Show 16 quoted lines
> 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

A wild guess: You are on Windows or OS/X, and the file exists in your worktree with different uppercase/lowercase name? Rename the file so that its case is the same as it is recorded in the repository.

-- Hannes
Piotr Krukowiecki· Feb 16, 2011, 19:21 UTC · re: Johannes Sixt · lore

Re: Corrupted git repository?

On Wed, Feb 16, 2011 at 7:54 PM, Johannes Sixt <j6t@kdbg.org> wrote:
Show 21 quoted lines
> On Mittwoch, 16. Februar 2011, Piotr Krukowiecki wrote:
>> 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
>
> A wild guess: You are on Windows or OS/X, and the file exists in your worktree
> with different uppercase/lowercase name? Rename the file so that its case is
> the same as it is recorded in the repository.
Nope, I'm on linux with case-sensitive file system.

Some commits to svn repository are coming from windows. But the cherry-picked one was my commit from linux. It was first done in git, then dcomitted to svn and then I tried to merge it to git branch - that failed.

-- 
Piotrek

← back to recent threads