2013-05-29 33 views
16

私はGitリポジトリをKilnからGithubに移行しようとしています。私はちょうど罰金リモート新しいを追加することができますが、私は新しいリモートにマスターをプッシュしようとすると、私は次のエラーを取得する:git repoから '.git'ディレクトリを削除しますか?

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' 

a9ee490ac00987835de30bdbc851da5e8d45d28bをコミットそれに以下のファイルがあります。

.git/ 
CHANGELOG.md 
JSONKit.h 
JSONKit.m 
README.md 

明らかに、過去に誰かがhgを使って、サブディレクトリ内の完全なgit repoをチェックしました。

私はそのディレクトリを完全に削除したいのですが、gitの履歴からそのファイルを削除するのに問題があります。

答えはpushing a git repo fails with error: contains '.git'です。私はレシピをgit repoとして扱いました。水銀のレポではありません。

私はgit filter-branch --index-filter 'git rm -r --cached --ignore-unmatch .git'を試してみましたが、私はエラーを取得:

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' 

と歴史が変わっていないようです。私は私のgit知識の限界にいる。誰も助けることができますか?

+0

repoオープンソースですか?あなたはそれのコピーを共有することができますか? –

+0

ああ、問題のリポジトリのコピーを共有する必要はありません。同じ種類の不良ツリーを持つGitリポジトリを構築することができました。これはテスト目的で使用できます。 –

+0

[git repoがエラーで失敗する: '.git'が含まれています](http://stackoverflow.com/questions/14728751/pushing-a-git-repo-fails-with-error-contains-git) –

答えて

1

次のコマンドを試しましたか?

git filter-branch --tree-filter 'rm -Rf .git' HEAD 

git filter-branch documentationこれは--index-filterよりも遅くなることを示しているが、それは仕事をすることができます。

+1

残念ながら、このアプローチはうまくいくとは思いません。 $ git filter-branch --tree-filter 'rm -Rf foo/.git' HEAD ..... リライト6652877677cf01a7b668704134d5e8bb62bfe317(6/6)エラー:無効なパス 'foo/'foo/.git/zero' エラー:無効なパス 'foo/.git/hero' エラー:無効なパス 'foo/.git/zero' パスfoo/.git/folder/zeroを無視します。 パスfoo /が無視されます。 git/hero パスを無視するfoo/.git/zero 警告:Ref 'refs/heads/master'は変更されていません –

+0

... 'git filter-branch --tree -filter 'は@danaが問題で遭遇した問題を持っています。私はBFGを使用することがおそらくこの時点でより良いアイデアだと思うでしょう。 –

0

私はそれを理解したよう窯としてそれを複製し、その後あなたはgitのかMercurialのこれらの日のいずれかとしてリポジトリのクローンを作成しましょう、そう水銀として、それを複製し、新しいレポなどのMercurialリポジトリが窯することmercurial filemap solution you already foundプッシュを使用しますgit。それからgitubにプッシュできるgit repoがあります。

27

BFG Repo-Cleanerは、の代わりに、より簡単で高速なGitヒストリからファイルを削除するために使用します。 https://rtyley.github.io/bfg-repo-cleaner/#usageを - しかし、コアビットは、ちょうどこのです:

慎重ここでの手順に従ってくださいBFG jarをダウンロードする(上記のJava 6以上が必要です)、このコマンドを実行します。

$ java -jar bfg.jar --delete-folders .git --delete-files .git --no-blob-protection my-repo.git 

あなたのリポジトリ全体の歴史がスキャンされます、 .gitという名前のファイルまたはフォルダは削除されます。私は.gitフォルダを含む特別に構築されたtest repoに対してこれをテストしました。うまくいきました。 Gitの中でも、違法である「.gitが」という名前reminding meそのファイルためミシェルJouvinに

おかげで(とGitので報告されたエラーメッセージは、彼らではなく、フォルダよりも、ファイルであること、それはすぐに明らかになりません) 、私はそれを反映するためにこの答えを更新しました。

全開示:私はBFG Repo-Cleanerの著者です。

+0

私は同じ問題を抱えていました。 –

+1

ありがとう!!私もまったく同じ問題を抱えていて、これが私の人生を助けました。もし私がこれを正解とすれば、 –

+1

私はgit filter-branchアプローチを試みましたが、うまくいかなかったのですが、bfg repo-cleanerを使用するのは魅力的でした。ありがとう! – omarshammas

関連する問題