From: Dmitry Potapov <dpotapov@gmail.com>
To: Luke Hutchison <luke.hutch@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: git leaves repo in bad state in out-of-space situation
Date: Sun, 17 Apr 2011 17:38:20 +0400 [thread overview]
Message-ID: <BANLkTim4=eKQ2wq73Lf5zrjOND-r1n0XCw@mail.gmail.com> (raw)
In-Reply-To: <BANLkTi=4EvRZK_bK=JrwiZgfaeHvNgj-dQ@mail.gmail.com>
Hi,
On Sun, Apr 17, 2011 at 10:40 AM, Luke Hutchison <luke.hutch@gmail.com> wrote:
> I just did a git pull and ran out of disk space halfway through, which
> left me with a bunch of "Could not create file <filename>" errors. I
> freed up space and tried to repeat the git pull. Now my repo is
> b0rked:
>
> $ git pull
> Updating eedace8..a37dbb1
> error: Your local changes to the following files would be overwritten by merge:
> <list of some of the pulled files>
> Please, commit your changes or stash them before you can merge.
> error: The following untracked working tree files would be overwritten by merge:
> <a lot more of the pulled files>
The repository is not borked, it's just your working tree is in an
inconsistent state, but it is easy to fix:
git reset --hard HEAD
i.e. to discard all changes in your working tree. BTW, it is not only
useful in the above situation, but when in the process of merging you
discover that you've resolved some conflicts in the wrong way and want
to re-do all merge again.
> I wasn't sure how to fix this, and this was probably the wrong
> response, but I tried "git add . ; git commit -a -m test ; git push"
and that was a silly thing to do... In fact, committing everything
blindly is almost always a bad idea...
BTW, did you mean "git pull" above? Because if you did "git push"
then those bogus changes are at the server now.
> and got a bunch of merge conflicts due to zero-length binary files
> (PNGs etc.). Repeating this again I get "up to date" but some of my
> files have now been replaced in the repo with zero-length versions,
> which seems dangerous if I didn't notice it and just assumed that git
> had worked its magic and fixed the situation.
git does not do magic, it does exactly what you say. If you said in
the previous commit to change some files to have a zero length then
you should not be surprise that they are empty now.
It always helps to run "gitk --all" to see what you are doing.
> I know that gracefully handling out-of-diskspace situations is a pain,
> and it's hard to catch each corner case. But it seems like git could
> degrade a little more elegantly in this situation (e.g. files should
> not just be created with zero length if there is no disk space left).
> Thoughts?
Creating or not creating files with zero length would not make any
practical difference here (instead of having zero it would be appeared
removed). There are many situations when checkout (reading files to
the work tree may fail in the middle), for instance, the user could
press CTRL-C, which will leave the working in an inconsistent state.
So, the general solution is only one:
git reset --hard HEAD
Dmitry
next prev parent reply other threads:[~2011-04-17 13:38 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-17 6:40 git leaves repo in bad state in out-of-space situation Luke Hutchison
2011-04-17 13:38 ` Dmitry Potapov [this message]
2011-04-17 19:09 ` Luke Hutchison
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='BANLkTim4=eKQ2wq73Lf5zrjOND-r1n0XCw@mail.gmail.com' \
--to=dpotapov@gmail.com \
--cc=git@vger.kernel.org \
--cc=luke.hutch@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).