So, it has been an interesting journey, but time to remove git-lfs. Here follows a summary of the approach I used to safely remove git-lfs,
- commit & push everything
- create a branch, something like fix/remove-lfs
- remove hooks
git lfs uninstall
- remove lfs stuff from .gitattributes (open file, delete content - don't delete the file!)
- list all lfs files,
git lfs ls-files
- run
git rm --cached
for each file- if your list is big, copy the contents into a file.txt
- make sure you remove the number and asterik on each line, you only want the paths to the files
while read line; do git rm --cached "$line"; done < files.txt
- run
git add
for each file- if you have a file.txt
while read line; do git add "$line"; done < files.txt
- run a
git status
and make sure all the files were added properly - commit everything
git add .gitattributes
git commit -m "unlfs"
git push
- check that no lfs files left with
git lfs ls-files
- remove any lfs,
rm -rf .git/lfs
Once your branch (fix/remove-lfs) is merged into develop, your team doesn't need to do anything other than simply pulling and checking out the new state of the world, their repository will work as-expected without git lfs installed. If git lfs is still installed, simply let them uninstall it: git lfs uninstall
Hi, I tried doing this from top to bottom, and I think I messed something up: I removed Git LFS, but I still have pointers instead of the original files. I'm not really sure how to fix this.
git lfs ls-files
returns nothing, which I guess means LFS isn't tracking these files anymore. Does that mean my data is gone forever and I have pointers to nothing?