Git Alt Modülleri. Süper projenin yeni bir klonuna çekiliyor


87

TAMAM. Ben de bunu yaladım sandım ... ama şimdi ...

Alt modül olarak GitHub'dan küçük bir kitaplık içeren bir projem var. Bu süper projenin orijinal versiyonunda, alt modül beklendiği gibi çalışıyor.

Bununla birlikte, süper projeyi klonladım, yapmam gerektiğini düşündüğüm şeyi yaptım: "git submodule init", alt modülün dizininin görünmesini sağladım, ancak boş.

Eğer şimdi yapmaya çalışırsam

git submodule update

alırım

fatal: Needed a single revision 
Unable to find current revision in submodule path 'external_libraries/BEACHhtml'

Denersem

git submodule foreach git pull

alırım

Entering 'external_libraries/BEACHhtml'
fatal: Where do you want to fetch from today?
Stopping at 'external_libraries/BEACHhtml'; script returned non-zero status.

.Git / config dosyamda şu var:

[submodule "external_libraries/BEACHhtml"]
    url = git@github.com:interstar/BEACHhtml.git

.Gitmodüllerimde şuna sahibim:

[submodule "external_libraries/BEACHhtml"]
path = external_libraries/BEACHhtml
url = git@github.com:interstar/BEACHhtml.git

Neyin eksik olduğu hakkında bir fikri olan var mı?

Yanıtlar:


189

Görünüşe göre şimdi (2019'da) en son GIT istemcisini yüklemek sorunu aşağıdaki yorumlara göre çözebilir. Şimdilik en iyi çözüm bu olmalı.


Seninle aynı sorunu yaşıyorum. Bu git'te bir hatadır: http://git.661346.n2.nabble.com/BUG-git-submodule-update-is-not-fail-safe-td7574168.html

Kısacası, sorununuz için şunu deneyin:

# rm -rf external_libraries/BEACHhtml
# git submodule update

Önceki ödeme klasöründe bir sorun var gibi görünüyor, onu kaldırın ve tekrar güncelleme sorunu çözer.


1
Benim için bu bir asılmış git-getirme o tutmak olduğunu klasör kilitli oldu
Mihai Timar

32
Ben alt modül worktree (hem kaldırmak zorunda ext/blah) ve aşağıdaki eşleştirme klasör GIT_DIR( .git/modules/ext/blah).
Tobu

2
Benim özel durumumda git submodule update, birisinin RSA anahtarlarını kabul etmesini istediği için CI sunucumda başarısız olmaya devam etti (ci sunucusu normalde https bağlantısını kullanır ve bu, bir alt modülün ssh bağlantısını ilk kez çekmesiydi). Umarım birisini bir saat kafa kaşınmadan kurtarır!
Maverik

8
2016'da bu hata hala devam ediyor :(
Paulo Neves

7
2017 kontrol ediliyor, hala mevcut.
william.taylor.09

4

Bu problemi yaşadım (kesintili ağ bu yüzden alt modül kontrolünü bu şekilde bıraktım) ve bu komut dosyasını yaparak çözdüm (adını git-submodule-fixverdim, böylece çalıştırabileyim git submodule-fix)

#!/bin/bash 

for arg 
do 
  echo $arg 
  find . -name "`basename $arg`" | grep "$arg\$" | xargs rm -fr
done

Bunu ie bir git submodule update

fatal: Needed a single revision
Unable to find current revision in submodule path 'some/submodule/path'

yapmak

git submodule-fix some/submodule/path
git submodule update

3

2 dizini silerek ve alt modülü yeniden yerleştirerek çözüldü:

  1. Dosyaya gidin external_libraries/BEACHhtmlve içine bakın .git. İçeriği şöyle bir şey olmalıgitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. Her iki Sil external_libraries/BEACHhtmlve .git/modules/external_libraries/BEACHhtmldizinleri.

Şu andan itibaren git submodule updatehatasız çalışır.


alt modülün yeniden başlatılması için daha git submodule initönce çalıştırmanız gerekebilir git submodule update, bu durumda bu çalışacaktır.
Pellet

1

2019 veya daha sonra okuyorsanız, git istemcisini güncellemeniz yeterlidir. Benim için çalıştı.


0

çalışan orijinal klonla bunu karşılaştırmak için bir diff aracı kullanın. Ayrıca ne yapargit submodule çıktı . Yapmadan önce her depoda aynı şubeyi işaret ettiğinizden emin olun.

Alt modülün tanımlanmadığı bir dala veya daha eski bir revizyona geçtiğinizden şüpheleniyorum.

Bu yardımcı olur umarım


0

Bir projedeki alt modülle aynı sorunu yaşadım. Alt modülü ayrı ayrı klonlamaya çalıştığımda iyi çalıştı.

Yukarıdaki tüm yanıtları denedim, ancak başarılı olamadım (git alt modül güncellemesi, ..., alt modül klasörlerini kaldırma, ...).

Sorun, git'in (Git-1.7.11-preview20120710'dan) en son sürüme (Git-1.8.1.2-preview20130201'e) güncellenmesinden sonra ortadan kalktı. Garip bir şekilde meslektaşlarımın daha eski bir sürümü vardı, sorunsuz çalışıyorlardı, ancak Mac kullanıyorlardı. Win7 64bit kullanıyorum.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.