I'm trying to migrate a git repo from Kiln to Github. I can add the new remote just fine, but when I try to push master to the new remote, I get the following error:
Counting objects: 8691, done. Delta compression using up to 8 threads. Compressing objects: 100% (3000/3000), done. remote: error: object a9ee490ac00987835de30bdbc851da5e8d45d28b:contains '.git' remote: fatal: Error in object error: pack-objects died of signal 13 error: failed to push some refs to '[email protected]:Account/repo.git'
Commit a9ee490ac00987835de30bdbc851da5e8d45d28b
has the following files in it:
.git/ CHANGELOG.md JSONKit.h JSONKit.m README.md
Obviously someone in the past, using hg
, checked in a full git repo in a subdirectory.
I'd like to just kill that directory entirely, but am having trouble removing that file from the git history.
The answer in pushing a git repo fails with error: contains '.git' doesn't help, because I've the the repo as a git repo, not a mercurial one.
I tried git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch .git'
, but I get the error:
Rewrite 7dbd0970d6c79215d11994b4a9b8091b2e954cfb (326/442)error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/HEAD' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/config' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/description' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/applypatch-msg.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/commit-msg.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/post-update.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/pre-applypatch.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/pre-commit.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/pre-rebase.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/prepare-commit-msg.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/hooks/update.sample' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/index' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/info/exclude' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/logs/HEAD' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/logs/refs/heads/master' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/objects/pack/pack-43fac03d375df5c1e380c5e522ba6bcb9b4e1ec1.idx' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/objects/pack/pack-43fac03d375df5c1e380c5e522ba6bcb9b4e1ec1.pack' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/packed-refs' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/refs/heads/master' error: Invalid path 'Account/Libraries/ShareKit/Submodules/JSONKit/.git/refs/remotes/origin/HEAD'
and history doesn't seem to be changed. I'm at the limit of my git knowledge. Can anyone help?
Use the BFG Repo-Cleaner, a simpler, faster alternative to git-filter-branch
specifically designed for removing files from Git history.
Carefully follow the steps here: https://rtyley.github.io/bfg-repo-cleaner/#usage - but the core bit is just this: download the BFG jar (requires Java 8 or above) and run this command:
$ java -jar bfg.jar --delete-folders .git --delete-files .git --no-blob-protection my-repo.git
Your entire repository history will be scanned, and any file or folder named .git
will be removed. I've tested this against a specially-constructed test repo containing a .git
folder, and it worked just fine.
Thanks to Michel Jouvin for reminding me that files named '.git' are also illegal in Git (and the error message reported by Git doesn't make it immediately obvious that they are files, rather than folders), I've updated this answer to reflect that.
Full disclosure: I'm the author of the BFG Repo-Cleaner.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With