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
You must have it installed to run it. But all
git-lfs uninstall --local
does is remove.git/hooks/pre-push
. I think it will create problems if you didn't do the re-normalize stuff as you will have pointers to stuff that does not exist anymore. After pushing to origin, have you tried to clone the repo and see if things are alright?