2009-09-10 45 views
5

Tôi đã tạo một repo git trống (cho phép gọi nó là repo # 1) và nhân bản nó.Tạo kho lưu trữ git chứa một kho git khác

  • Trong bản sao (repo # 2) Tôi đã tạo một số thư mục, một trong số đó tôi đã quyết định tạo một repo git (repo # 3).
  • Khi tôi cam kết repo # 2, mọi thứ chạy như dự kiến ​​exept repo # 3 bị bỏ qua (thư mục .git, các tệp cam kết).

Làm cách nào để thêm repo # 3 để repo # 2 để khi tôi đẩy repo # 2 để repo # 1, tôi có thể tạo một bản sao riêng biệt của repo # 1 mà tôi cũng có thể truy cập lịch sử, v.v. của repo # 3?

Nói cách khác. Làm cách nào để tạo kho lưu trữ git chứa kho git khác?

Trả lời

3

Bạn không nên làm điều đó. Siêu dữ liệu dưới .git/được thay đổi trong suốt thời gian repo và thay đổi đó không nhất thiết có nghĩa là "thay đổi trong nội dung" cần được cam kết: đơn giản git repack thay đổi tệp theo .git nhưng thay đổi đó không được cam kết. Tại sao bạn muốn làm điều đó?

+0

Tôi đang sử dụng repo mẹ (# 2) để tạo điều kiện dễ dàng sao lưu các thư mục mà nó chứa trong đó bao gồm repo # 3. Tất cả mọi thứ được lưu trữ trên một ổ đĩa USB và cách này tôi có thể dễ dàng đẩy một bản sao lưu của tất cả mọi thứ vào vị trí sao lưu của tôi (repo # 1). Dường như tôi sẽ chỉ phải sao chép các thư mục theo cách thủ công để sao lưu chúng ngay bây giờ. –

+0

Nếu tất cả mọi thứ bạn muốn chỉ là một bản sao lưu của tất cả các kho (và bản sao làm việc), thì bạn có thể chỉ sử dụng một cái gì đó mà không biết gì về git kiến ​​cấu trúc của nó, ví dụ như mercurial hoặc bazaar. Như wRAR cho biết nó sẽ thêm nhiều thứ mà bạn không cần, nhưng nếu bạn chỉ muốn một bản sao lưu thì nó có thể là ok. Nhưng bạn cũng có thể chỉ cần viết một kịch bản mà đi qua tất cả các kho lưu trữ trên thanh của bạn và đẩy nó vào máy chủ. –

11

Tôi không biết làm thế nào để làm chính xác những gì bạn đang đề xuất, nhưng các mô-đun phụ có thể đến gần (hoặc gần như bạn sẽ nhận được). Đây là một hướng dẫn phong nha:

http://git.or.cz/gitwiki/GitSubmoduleTutorial

2

thấy git submodule

tôi đã không bao giờ sử dụng nó, vì vậy tất cả tôi có thể làm là gửi một liên kết ...

2

Tôi không phải là một GIT pro bởi bất kỳ phương tiện nào, nhưng tôi nghĩ bạn đang đề cập đến git submodules

git submodule --help 
0

Trong thư mục gốc của kho chứa của bạn, chỉ cần làm:

git submodule add https://github.com/yourusername/containedrepo.git containedrepo 

này sẽ sao chép các containedrepo bên trong thư mục /containedrepo. Từ bây giờ, bạn không nên thực hiện thay đổi trong thư mục /containedrepo, mà là thực hiện thay đổi trong containedrepo và sau đó kéo chúng. Khi bạn kéo kho chứa container chính, nó cũng sẽ kéo tất cả các kho lưu trữ con, ví dụ: containedrepo.git.

Dưới đây là một hướng dẫn tuyệt vời: https://github.com/NebuPookins/git-submodule-tutorial

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