2012-01-08 43 views
10

Tôi muốn duy trì hai repo git khác nhau. Các repos nên ở trong cùng một thư mục gốc. Làm thế nào để đạt được nó?Hai repo Git khác nhau trong cùng một thư mục

Điều tôi sẵn lòng là: để quản lý hai bản repos có sự khác biệt đôi chút. Tôi có thể có hai bản hoàn toàn khác nhau trong cùng một thư mục không?

Nhờ chăm sóc :)

+0

thể trùng lặp của [Nhiều kho Git trong một thư mục] (http://stackoverflow.com/questions/2519446/multiple-git-repositories- trong một thư mục) –

+0

Và [tại đây] (http://stackoverflow.com/questions/2065559/using-two-git-repos-in-one-folder) và [ở đây] (http: // stackoverflow. com/questions/436125/hai git-kho-trong-một-thư mục), và [ở đây] (http://grahamc.com/blog/multiple-git-repositories-one-directory-dotfiles/), .. –

+0

Cây thông st bài viết không chính xác giải quyết vấn đề này. Những gì nó địa chỉ là sub-moduling. Những gì tôi yêu cầu là: Tôi có thể tạo hai repos cá nhân dựa trên cùng một tệp nguồn không? – giga

Trả lời

10

Bạn có thể đạt được điều này bằng cách thêm bằng một trong hai tùy chọn này trên lệnh git chính nó:

git --work-tree=where/my/code/is --git-dir=some/path/to/my/.git status 

Điều này sẽ cho phép bạn có 2 Repos riêng biệt chia sẻ cùng thư mục làm việc.

Tuy nhiên bạn sẽ có thể nhận được những gì bạn cần bằng cách sử dụng một repo với nhiều chi nhánh và có lẽ chỉ đẩy một số nhánh nhất định cho nhiều điều khiển từ xa.

+0

Yup, tôi có thể kết thúc với nhiều nhánh đẩy được chọn brunches chỉ. – giga

+2

Tôi cũng đã tạo một kịch bản giúp dễ dàng làm việc với các bản repo phủ và có thể được sử dụng như một trình quản lý gói: https://github.com/capr/multigit – cap

2

Tôi giải quyết vấn đề này, mà git dường như không cung cấp một giải pháp tốt để, bằng cách không sử dụng git để giải quyết nó. Tôi đã sử dụng directory junction để liên kết thư mục con mới với thư mục con của thư mục mẹ (ví dụ: liên kết thư mục con với "thư mục chú": P). Ví dụ trong Command Prompt cho Windows Vista trở lên:

cd CurrentFolder/ 
mklink /J "LinkedFolder" "../TargetFolder" 

sẽ gây LinkedFolder để trỏ đến TargetFolder (lưu ý có dấu ngoặc kép). cấu trúc tập tin ví dụ tôi sau đó sẽ sử dụng:

  • root/
    • TargetFolder/
      • chia sẻ file
    • CurrentFolder/
      • LinkedFolder/

"POSIX-compliant" operating systems seem to use ln or ln -s for this functionality.

Nó hoạt động xuất sắc (lưu ý: sau đây là từ riêng thử nghiệm Windows 8.1 của tôi):

  • các LinkedFolder không tồn tại trước khi gọi mklink
  • khi bạn thực hiện liên kết , bất cứ điều gì bạn làm với các tệp trong TargetFolder hoặc LinkedFolder sẽ phản ánh trong khác, vì chúng là một và giống nhau
  • nếu bạn xóa l ink (LinkedFolder), không có gì xảy ra với thư mục đích thực (TargetFolder)
  • nếu bạn xóa thư mục đích thực (TargetFolder), liên kết sẽ vẫn hoạt động (nó không bị xóa); nếu sau đó bạn cố gắng truy cập vào liên kết, bạn sẽ chỉ gặp lỗi; nếu bạn tạo lại thư mục đích thực (TargetFolder) một lần nữa, liên kết sẽ tiếp tục hoạt động như trước đây!

Hy vọng điều này sẽ giúp ai đó. Tôi vừa học về tính năng này và tôi thích nó.

Xem thêm:
NTFS Junction Point
NTFS Symbolic Link
Symbolic Link

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