Recovering From a File That Should Have Pointers in Git
Mike Griffin• #git
I was working away on a project that a few other people have been working on and I ran into a problem trying to update the branch I was working on.
It turns out that at some stage in the past, someone tried badly to add a file to the repository using git lfs
.
It left it in this weird zombie state where I wasn’t able to checkout the original copy to remove the changes, or stash it, or anything.
I kept getting this error message:
$ git co [filename]
Updated 1 path from the index
Encountered 1 file(s) that should have been pointers, but weren't:
[filename]
After much searching, I found an old GitHub issue which described my problem, but none of the solutions worked, or seemed feasible.
I have no idea how I stumbled across the thing that did fix it, but I’m recording it here for the next time I run into it:
$ git lfs migrate import --no-rewrite [filename]
So there we go, it’s no longer part of the git status
output.
There was one other little step that was needed during the merge:
$ git merge origin/master
warning: Cannot merge binary files: [filename] (HEAD vs. origin/master)
Auto-merging [filename]
CONFLICT (content): Merge conflict in [filename]
Automatic merge failed; fix conflicts and then commit the result.
A quick git reset HEAD [filename]
later, and I was able to complete the merge.