2016-07-31 16 views
6

İki alt modüle sahip bir depom var.Git dizini Eski Alt Modül Yolunda mı?

fatal: no submodule mapping found in .gitmodules for path 'AppName.xcodeproj/..Vendor/AFNetworking'

Benim submodules aynı dizindeki tüm değildi ve ben projeyi temizlemek için karar: Ben git submodule init veya git submodule update çalıştırdığınızda Git aşağıdaki hata ile, şikayet. Alt modüllerin bazılarını içeren Vendor adlı bir dizim vardı, ancak alt modülü git'ten kaldırmak için here yönergelerini takip ettim. Ardından, alt modülleri submodules adlı yeni bir dizine ekledim.

Benim alt modüllerimden biri, ilk Satıcı dizininde bir alt modül olarak eklediğim AFNetworking kitaplığıdır. Bir süre önce kaldırdım ve temizlik sürecinin bir parçası olarak tekrar ekledim. App sadece iyi inşa görünüyordu ve benim git submodule komutları düzgün çalışıyordu. Şimdi, farklı bir makinede kontrol ettiğimde, yukarıda açıklandığı gibi başarısız oluyor. Benim modülleri nerede git bildiği gibi bu normal görünüyor

[submodule "submodules/AFNetworking"] 
    path = submodules/AFNetworking 
    url = https://github.com/AFNetworking/AFNetworking.git 
[submodule "submodules/LNPopupController"] 
    path = submodules/LNPopupController 
    url = https://github.com/MosheBerman/LNPopupController.git 

ve tüm iyi olmalıdır:

Benim .gitmodules dosyası bu gibi görünüyor. Aynı benim .git/config dosyanın doğrudur:

[core] 
    repositoryformatversion = 0 
    filemode = true 
    bare = false 
    logallrefupdates = true 
    ignorecase = true 
    precomposeunicode = true 
[remote "origin"] 
    url = [email protected]:MosheBerman/theshmuz.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
[branch "master"] 
    remote = origin 
    merge = refs/heads/master 
[submodule "submodules/AFNetworking"] 
    url = https://github.com/AFNetworking/AFNetworking.git 

hata keskin olduğu ve fark etmemi vermesi biraz zaman aldı, ama ben hata mesajı artık eskiVendor dizini başvuran fark bulunmaktadır.

Kedinin çıktısını bir metin dosyasına yönlendirerek ve bir metin düzenleyicisi kullanarak ./git/index'u açtım. Yeterli, AppName.xcodeproj/../Vendor/AFNetworking/ dizinde görünür. Bu kötü bir gitlink olabilir mi? Bunu nasıl temizlerim böylece repo'umu normal olarak başlatabilir ve kurabilirim?

cevap

1

ben gibi pek önce AppName.xcodeproj içeren kök dizinden endeksi, gelen önbelleğe başvuru kaldırma çalıştı: Yani

git rm --cached /Vendor/AFNetworking

, ben klasör hiyerarşisini yeniden ve ben de /Vendor/AFNetworking. içinde bir kukla dosyası ekleyerek çalıştı Vendor'un içinde "AFNetworking" adlı bir dosya eklemeyi denedi. Eklemek ve daha sonra bu dosyaları kaldırmak hile yapmadı.

Bu soruna bir göz attım ve indeksi incelemek için doğru yolu açıklayan a blog post (link)'u buldum.

AppName.xcodeproj/../Vendor/AFNetworking.

çözüm şöyle, dizinden tam liste ile dosyayı kaldırmak oldu:

git rm --cached AppName.xcodeproj/../Vendor/AFNetworking

Benim endeks içinde eski altmodülün garip referansı vardı çıkıyor Daha sonra git submodule update'u başarıyla çalıştırabildim. Dizin her zaman unix dosya sistemi göreli yollarla eşleşmiyor gibi görünüyor, ancak bazı durumlarda daha spesifik olabilir. Pro Git adlı kitabın, bundan şüphelenmemi sağlayan bazı bilgiler vardı (Basım 9 basımı, Chapter 10 online), ancak dizinin nasıl açılacağını tam olarak anlamak için blog gönderisini aldım.

İlgili konular