Mô-đun con Git. Kéo vào một bản sao mới của siêu dự án


87

ĐỒNG Ý. Vì vậy, tôi nghĩ rằng tôi đã liếm cái này ... nhưng bây giờ ...

Tôi có một dự án bao gồm một thư viện nhỏ từ GitHub như một mô-đun con. Trong phiên bản gốc của siêu dự án đó, mô-đun con đang hoạt động như mong đợi.

Tuy nhiên, tôi vừa nhân bản siêu dự án, làm những gì tôi nghĩ mình nên làm: "git submodule init", có thư mục của submodule xuất hiện, nhưng nó trống.

Nếu bây giờ tôi cố gắng làm

git submodule update

tôi có

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

Nếu tôi cố gắng

git submodule foreach git pull

tôi có

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

Trong .git / config của tôi, tôi có cái này:

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

Trong .gitmodules của tôi, tôi có cái này:

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

Bất cứ ai có một ý tưởng những gì còn thiếu?

Câu trả lời:


189

Có vẻ như bây giờ (vào năm 2019) cài đặt ứng dụng khách GIT mới nhất có thể giải quyết vấn đề theo nhận xét bên dưới. Đây sẽ là giải pháp tốt nhất cho bây giờ.


Tôi có cùng một vấn đề như bạn. Đây là một lỗi trong git: http://git.661346.n2.nabble.com/BUG-git-submodule-update-is-not-fail-safe-td7574168.html

Tóm lại, đối với vấn đề của bạn, hãy thử:

# rm -rf external_libraries/BEACHhtml
# git submodule update

Có vẻ như có điều gì đó không ổn với thư mục kiểm tra trước đó, hãy xóa nó và cập nhật lại để giải quyết vấn đề.


1
đối với tôi nó là một treo cổ git-Truy xuất được giữ thư mục bị khóa
Mihai Timar

31
Tôi đã phải xóa cả worktule con ( ext/blah) và thư mục phù hợp bên dưới dấu GIT_DIR( .git/modules/ext/blah).
Tobu

2
Trong trường hợp cụ thể của tôi liên git submodule updatetục không thành công trên máy chủ CI của tôi vì nó muốn ai đó chấp nhận các khóa RSA (máy chủ ci thường sử dụng kết nối https và đây là lần đầu tiên một mô-đun con kéo vào kết nối ssh). Hy vọng nó tiết kiệm cho ai đó một giờ vò đầu!
Maverik

8
Vào năm 2016, lỗi này vẫn tiếp diễn :(
Paulo Neves,

6
2017 nhận phòng, vẫn còn.
william.taylor.

4

Tôi đã gặp sự cố này (mạng không ổn định nên tôi bị rớt kiểm tra mô-đun con như thế này) và tôi đã giải quyết nó bằng cách tạo tập lệnh này (đặt tên cho nó git-submodule-fixđể tôi có thể chạy nó là git submodule-fix)

#!/bin/bash 

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

Nếu bạn nhận được điều này tức là từ git submodule update

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

làm

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

3

Giải quyết bằng cách xóa 2 thư mục và tìm nạp lại mô-đun con:

  1. Đi tới external_libraries/BEACHhtmlvà xem xét .gittệp. Nội dung của nó phải giống nhưgitdir: ../../.git/modules/external_libraries/BEACHhtml
  2. Xóa cả hai external_libraries/BEACHhtml.git/modules/external_libraries/BEACHhtmlthư mục.

Từ nay git submodule updatechạy không có lỗi.


bạn có thể cần chạy git submodule inittrước git submodule updateđể mô-đun con được khởi tạo lại, sau đó điều này sẽ hoạt động.
Pellet

1

Nếu bạn đang đọc vào năm 2019 trở lên, chỉ cần cập nhật ứng dụng git. Đã làm cho tôi.


0

sử dụng một công cụ khác biệt để so sánh bản sao gốc đang hoạt động và bản sao này. Ngoài ra, những gì hiện git submoduleđầu ra. Đảm bảo rằng bạn đang trỏ đến cùng một nhánh trong mỗi repo trước khi thực hiện.

Tôi nghi ngờ rằng bạn đã chuyển sang phiên bản nhánh hoặc cũ hơn mà mô-đun con chưa được xác định.

hi vọng điêu nay co ich


0

Tôi đã gặp vấn đề tương tự với một mô-đun con trong một dự án. Khi tôi cố gắng sao chép riêng mô-đun con, nó hoạt động tốt.

Tôi đã thử tất cả các câu trả lời ở trên nhưng không thành công (cập nhật git submodule, ..., xóa các thư mục submodule, ...).

Sự cố đã biến mất sau khi cập nhật git (từ Git-1.7.11-preview20120710) lên phiên bản mới nhất (lên Git-1.8.1.2-preview20130201) vào thời điểm đó. Kỳ lạ là các đồng nghiệp của tôi thậm chí còn có phiên bản cũ hơn, hoạt động mà không gặp bất kỳ sự cố nào, nhưng chúng lại chạy trên Mac. Tôi đang sử dụng Win7 64bit.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.