2013-05-29 38 views
16

Bir git repo'yu Kiln'den Github'a geçirmeye çalışıyorum. Gayet iyi yeni uzaktan ekleyebilir, ama yeni uzaktan kumandaya ana aktarma yapmaya çalıştığınızda, aşağıdaki hatayı alıyorum:'.git' dizinini git repo?

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

:

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 içinde aşağıdaki dosyaları vardır Teslim Et Açıkçası, geçmişte bir kişi, hg kullanarak, bir alt dizinde tam git repo'yu işaretledi.

Sadece bu dizini tamamen öldürmek istiyorum, ancak bu dosyayı git geçmişinden kaldırmada sorun yaşıyorum.

pushing a git repo fails with error: contains '.git''daki yanıt işe yaramıyor çünkü bir reper gibi bir repo'dayım, merhametli değil.

Ben git filter-branch --index-filter 'git rm -r --cached --ignore-unmatch .git' denedim ama hata alıyorum:

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' 

ve geçmiş değiştirilemez görünmüyor. Git bilgiimin sınırındayım. Biri yardım edebilir mi?

+0

Repo açık kaynak mı? bir kopyasını paylaşabiliyor musunuz? –

+0

Ah, söz konusu repo'nun bir kopyasını paylaşmaya gerek yok, test amaçlı kullanabileceğim aynı tür kötü bir ağaçla bir Git deposu oluşturmayı başardım.arasında –

+0

olası yinelenen [bir git Repo itme hata ile başarısız: içeren '.git'] (http://stackoverflow.com/questions/14728751/pushing-a-git-repo-fails-with-error-contains-git) –

cevap

1

Aşağıdaki komutla denediniz mi?

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

git filter-branch documentation

bu --index-filter daha yavaş olacağını belirten, ancak işi yapabilirdi.

+1

Maalesef, bu yaklaşımın bir test repo'suna karşı çalışacağını sanmıyorum. $ git filtre şube --tree filtre 'rm -Rf foo/.git' BAŞ ..... Rewrite 6652877677cf01a7b668704134d5e8bb62bfe317 (6/6) hatası: Geçersiz yol 'foo/Bu alıyorum çıkışı, inşa .git/folder/zero ' hatası: Geçersiz yol' foo/.git/hero ' hatası: Geçersiz yol' foo/.git/zero ' Yok sayma yolu foo/.git/folder/zero Yok sayılıyor. git/hero Görmezden gelme yolu foo/.git/zero UYARI: Ref 'refs/heads/master' değişkeni –

+0

... 'git filter-branch --tree kullanarak bile görünüyor -filter 'sorunun @dana karşılaştığı problemi vardır. BFG'yi kullanmanın muhtemelen bu noktada daha iyi bir fikir olduğunu düşünürdüm. –

0

Anladığım kadarıyla fırın olarak aşağı klon Sonra git ya Mercurial bugünlerde ya gibi bir depo klonlamak izin verdi, cıva gibi klonlamak, yeni bir repo olarak Mercurial repo fırın için bu mercurial filemap solution you already found itmek kullanır ve budala. O zaman github'a itebileceğiniz bir git repo olacak.

27

Özellikle Git geçmişindeki dosyaları kaldırmak için tasarlanmış git-filter-branch'a göre daha basit, daha hızlı bir alternatif olan BFG Repo-Cleaner'u kullanın. https://rtyley.github.io/bfg-repo-cleaner/#usage - ama çekirdek bit sadece şudur:

dikkatlice burada adımları izleyin (yukarıda Java 6 gerektirir ya) BFG jar indirip bu komutu çalıştırın:

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

Sizin tüm depo geçmişi taranır, ve .git isimli dosya veya klasör silinecektir. Bunu bir .git klasörü içeren özel olarak oluşturulmuş test repo karşı test ettik ve iyi çalıştı. Git de yasadışı '.git' adlı reminding meo dosyalar için Michel Jouvin için

Teşekkürler (ve Git tarafından bildirilen hata mesajı onlar Klasörler yerine, dosyaları olduğunu hemen belli yapmaz) Bunu yanıtlamak için bu cevabı güncelledim.

Tam açıklama: Ben BFG Repo-Cleaner yazarı değilim.

+0

Aynı problem vardı ve bu çözüm benim için hile yaptı. –

+1

Teşekkürler! Bende aynı sorun vardı ve bu hayatımı kurtardı. Eğer bunu doğru cevap olarak işaretleyebilirsem. –

+1

Git filtre-dalı yaklaşımını denedim ve işe yaramadı, ama bfg repo-cleaner kullanmak bir cazibe gibi çalıştı. Teşekkürler! – omarshammas