2012-04-25 22 views
23

Tôi đã tạo một dự án submodule và đặt nó lên Github.git: thay đổi nguồn gốc của mô hình con được nhân bản

Tôi tạo ra một dự án khác, supermodule, và sau đó đã làm điều này:

cd supermodule 
git init 
mkdir lib 
git clone git://github.com/tandu/submodule lib/submodule 
git submodule add ./lib/submodule lib/submodule 

này làm việc tốt, nhưng trên trang web, nó không thể tìm thấy liên kết đến submodule khi xem các tập tin (trong thực tế nó chỉ nói "Tải dữ liệu cam kết" mãi mãi). Chính thư mục con có chính xác là origin.

Rõ ràng, những gì tôi nên làm là

... 
mkdir lib 
git submodule add git://github.com/tandu/submodule lib 

... nhưng đó là quá muộn cho điều đó ngay bây giờ. Làm thế nào tôi có thể có submodule trong dự án này một cách chính xác trỏ đến origin?

Trả lời

41

Điều này dường như phụ thuộc rất nhiều vào phiên bản git bạn đang sử dụng.

  1. Nếu có, hãy thay đổi mục trong phần [submodule "<dirname>"] của tệp .gitmodules.
  2. Nếu có, hãy thay đổi mục nhập url trong phần [submodule "<dirname>"] của tệp .git/config.
  3. Thay đổi số url trong cấu hình của chính mô-đun con. Vị trí của tệp config phụ thuộc vào phiên bản. Các phiên bản cũ hơn có trong <dirname>/.git/config, phiên bản mới hơn trong .git/modules/<dirname>/config. Tuy nhiên, bạn luôn có thể sử dụng dưới đây lệnh:
cd <dirname> 
git config remote.origin.url <new_url> 
+5

với phiên bản hiện tại của git (2.1.0), làm 'git submodule sync --recursive' đã đủ cho tôi để cập nhật submodule' nguồn gốc 'từ xa. – desseim

Các vấn đề liên quan