Skip to content

Instantly share code, notes, and snippets.

@AlexZeitler
Last active September 15, 2016 19:55
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save AlexZeitler/697dfbc7d227149d33e612dc68377d3e to your computer and use it in GitHub Desktop.
Save AlexZeitler/697dfbc7d227149d33e612dc68377d3e to your computer and use it in GitHub Desktop.
Removing big files from Git repository history in a batch
# CREATE A BACKUP FIRST!
# Then find the oldest commit containing the unwanted files
# ./replace.sh <PathToFileContainingTheBigFilesToRemove> <OldestCommitSHA>
cd /path/to/your/git/repository
./replace.sh files.txt 9e5bc93
layout/Mackbook-Air-Mock-Up-PIXEDEN.zip
layout/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-.pdf
layout/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-.psd
layout/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up.psd
layout/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-PIXEDEN/Thumbs.db
layout/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-PIXEDEN/license-README-FIRST.txt
layout/Mackbook-Air-Mock-Up-PIXEDEN/Mackbook-Air-Mock-Up-PIXEDEN/preview.jpg
layout/Mackbook-Air-Mock-Up--2.png
layout/Mackbook-Air-Mock-Up-.png
layout/iPhone-5-3D-view-MockUp-PIXEDEN.zip
layout/iPhone-5-3D-view-MockUp-PIXEDEN/iPhone-5-3D-view-MockUp/Thumbs.db
layout/iPhone-5-3D-view-MockUp-PIXEDEN/iPhone-5-3D-view-MockUp/iPhone-5-3D-view-MockUp.psd
layout/iPhone-5-3D-view-MockUp-PIXEDEN/iPhone-5-3D-view-MockUp/license-README-FIRST.txt
layout/iPhone-5-3D-view-MockUp-PIXEDEN/iPhone-5-3D-view-MockUp/preview.jpg
layout/iPhone-5-3D-view-MockUp-PIXEDEN/iPhone-5-3D-view-MockUp/iphone.psd
layout/mbp_iphone_.pdn
layout/mbp_iphone_.png
layout/mbp_iphone__2.pdn
layout/products-WB05N1SL7.zip
layout/iphone-2.png
layout/iphone.png
#!/bin/bash
rm -rf .git-rewrite/
while IFS='' read -r line || [[ -n "$line" ]]; do
rm -rf .git-rewrite/
git update-ref -d refs/original/refs/heads/master
git filter-branch --index-filter "git rm --cached --ignore-unmatch $line" $2..HEAD
done < "$1"
Rewrite 0ccf81d006a47afd4c71946feb4583869bf580e0 (27/49)rm 'layout/iphone-2.png'
Rewrite a572dbaf4825d23aa8b776e2670b298a4045c7aa (28/49)rm 'layout/iphone-2.png'
Rewrite 3b04dff0bf228dbf5ba9ea3ec9c751db4d45aad7 (29/49)rm 'layout/iphone-2.png'
Rewrite 335b26a65c3968381011d4b141adb1c2b880f851 (30/49)rm 'layout/iphone-2.png'
Rewrite 01172efc5356de01dc3e509b8a6a0c548795d72b (31/49)rm 'layout/iphone-2.png'
Rewrite 623a5a54bca17da6d8ed00a2edba2c59acb41d22 (32/49)rm 'layout/iphone-2.png'
Rewrite bb72bf5d455bcac6be588f8a15a86d149f31f7d6 (33/49)rm 'layout/iphone-2.png'
Rewrite 5dc762f75b62df2867ca48218568e114ba8e1939 (34/49)rm 'layout/iphone-2.png'
Rewrite 585331f4c5472ef7e33d9eab879b0bc802519107 (35/49)rm 'layout/iphone-2.png'
Rewrite 4db00f4f031ffe3bcaf14923092045ef0f1bdb03 (36/49)rm 'layout/iphone-2.png'
Rewrite cf78602a235b22fd05b226e608e37dfc57c8669c (37/49)rm 'layout/iphone-2.png'
Rewrite 0f39f59c6bc323f10eb2586ca4a92abb780c66a0 (38/49)rm 'layout/iphone-2.png'
Rewrite 37e45c8ccc24ccde553194ac3d7632922cefb461 (39/49)rm 'layout/iphone-2.png'
Rewrite 95cfae8e2d221edc47cfa61f7bafedd9670f5e3f (40/49)rm 'layout/iphone-2.png'
Rewrite cd499c1cadac574b618edb3c94ed7fb8348fed50 (41/49)rm 'layout/iphone-2.png'
Rewrite f696249e4e2fec5f9804294f5156cdf53adddf6a (42/49)rm 'layout/iphone-2.png'
Rewrite 907a985b20695bd8d42c8e29626554c437c0a0f3 (43/49)rm 'layout/iphone-2.png'
Rewrite 03248e659ace1fdbc0647f451b9048d64ff8094e (44/49)rm 'layout/iphone-2.png'
Rewrite b124ce5355d1846c6a72b406f1e500d18922f814 (45/49)rm 'layout/iphone-2.png'
Rewrite e43133a9cc30d89da405601f7d6890823e836f99 (46/49)rm 'layout/iphone-2.png'
Rewrite d58e39c4ba6191bcb92dd0f929fbaa340b63910d (47/49)rm 'layout/iphone-2.png'
Rewrite 894aeea56a0fcb1efbfdc0d6aba4380ce550806a (48/49)rm 'layout/iphone-2.png'
Rewrite 1ce22851dfd70615454e122d96aa00c2f1e09ded (49/49)
Ref 'refs/heads/master' was rewritten
Rewrite 0bfd29ca16d197bacaa157a06bcddc921f9f5595 (27/49)rm 'layout/iphone.png'
Rewrite 07a8760aae669059b8482f6bfeefbfbaa23dfd11 (28/49)rm 'layout/iphone.png'
Rewrite b007f34ef9ce2e992dd614fed7d34525b765a384 (29/49)rm 'layout/iphone.png'
Rewrite 875fc412cc5f10a1bf211e45acc4522c1c0e32a5 (30/49)rm 'layout/iphone.png'
Rewrite f080c1c9e495c8a91080019e19c4f74862881dc3 (31/49)rm 'layout/iphone.png'
Rewrite b6bcebe400e49583121385d2cabab9887c5814bf (32/49)rm 'layout/iphone.png'
Rewrite 8401130282012d11192573f55bff89385adc3217 (33/49)rm 'layout/iphone.png'
Rewrite ee7acf94e0a0da74dc4905a00404e01d4838819a (34/49)rm 'layout/iphone.png'
Rewrite 031d1943f58cf916d46d7bc825c486814ace8f72 (35/49)rm 'layout/iphone.png'
Rewrite 91a9e7c45eb278d8687b4df891da20f305c0a581 (36/49)rm 'layout/iphone.png'
Rewrite fd841baa0112977ce42bca612806f5fd2c732d23 (37/49)rm 'layout/iphone.png'
Rewrite 3bb5fa468691bfeb0fa06b1c5dec28726bb75a6e (38/49)rm 'layout/iphone.png'
Rewrite ebc44fd5715bd6dc2142f5b2307b94ab42464905 (39/49)rm 'layout/iphone.png'
Rewrite c7eeab3d2b10c527d8ffdc8446c3538098c4b96d (40/49)rm 'layout/iphone.png'
Rewrite ac641ff98b89860bc4394f058163c11c2c4dad6c (41/49)rm 'layout/iphone.png'
Rewrite 8ef4eb9daa94c5899bc72fb3dec75bb39ae7efe0 (42/49)rm 'layout/iphone.png'
Rewrite 1fa7db8b34adadb58e22071da285fa24a455b3f0 (43/49)rm 'layout/iphone.png'
Rewrite afd6f89cfc443458fe8a7db73d78d3a700bdacbb (44/49)rm 'layout/iphone.png'
Rewrite 2759ff104a705d38df26e77d9fc9eb077c838bf9 (45/49)rm 'layout/iphone.png'
Rewrite 870ea0aee8d21467fcbb34753b1b0c12a533c5bf (46/49)rm 'layout/iphone.png'
Rewrite 54c7d21ac21d27b17d8f765c4b562f9e0da59a9c (47/49)rm 'layout/iphone.png'
Rewrite 8e0ce107f86bdd0a7fe625641ec03de41d62d49c (48/49)rm 'layout/iphone.png'
Rewrite 521be1fa1c4d7747a616b4ca25ac5a24992ebbe0 (49/49)
Ref 'refs/heads/master' was rewritten
@StefanScherer
Copy link

Nice! There also is a good explanation in the GitHub docs https://help.github.com/articles/remove-sensitive-data/ to understand the git magic.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment