2012-03-03 32 views
6

Tôi tự hỏi liệu có thể nói có repo chính với mọi thứ tôi cần, cấu hình, mã ứng dụng, v.v. (Đây là môi trường MVC) và tạo chi nhánh từ repo GIT chính chỉ với một số mô hình, bộ điều khiển và lượt xem.GIT Chi nhánh các tệp cụ thể?

Vì vậy, tôi sẽ có một repo chính với

applications/* 
assets/* 
system/* 

Và tôi sẽ có một chi nhánh với

applications/controllers/controller_name.php 
applications/model/model_name.php 
applications/views/view_name.php 
assets/modules/controller_name/* 

Sau đó, tôi có thể sáp nhập chi nhánh đó vào repo chính cho mỗi "MVC thiết lập" mới

Điều này có hợp lý không? Và nó có thể được thực hiện?

Trả lời

8

Git không phân nhánh trên cơ sở từng tệp, chi nhánh trên cơ sở kho.

Điều đó nói rằng, chỉ vì bạn tạo một chi nhánh với toàn bộ repo không có nghĩa là bạn phải có tất cả các tệp giống nhau trong mỗi chi nhánh.

+0

Tôi có một số mô-đun Magento trong kho lưu trữ của riêng họ. Tất cả các đường dẫn tệp đều giống nhau (ví dụ: '/ app/code/community/MyNamespace/[tên mô-đun] /' và '/ app/etc/modules/[module config] .xml'). Với Git, tôi có thể dễ dàng hợp nhất chúng vào bất kỳ dự án Magento nào. Miễn là tên tập tin không xung đột nó không phải là một vấn đề. –

3

Bài hát Git ảnh chụp nhanh của codebase của bạn (xem thêm the Git parable). Vì vậy, bất cứ điều gì bạn muốn có khác nhau từ các chi nhánh chủ, bạn có thể theo dõi trong một chi nhánh riêng biệt. Nếu điều đó có nghĩa là bạn sẽ có các tệp mới trong nhánh khác, bạn có thể làm điều đó. Nếu điều đó có nghĩa là bạn sẽ có cùng một tệp, được sửa đổi, bạn có thể làm điều đó.

Tôi không chắc chắn ý bạn là "đối với mỗi thiết lập MVC mới", nhưng có vẻ như bạn đang suy nghĩ phức tạp. Dường như với tôi bạn muốn có một "cơ sở chung" và sau đó có "thiết lập cụ thể" dựa trên cơ sở chung đó. Bạn có thể thực hiện việc này bằng cách có một nhánh chính với cơ sở và theo dõi các thay đổi/bổ sung cụ thể của thiết lập/bất kỳ thứ gì trong các nhánh thiết lập riêng lẻ.

Cách tiếp cận thứ hai này thường được sử dụng cho "biến thể sản phẩm" trong thực tế. Bạn thường sẽ phát triển các chức năng phổ biến trên nhánh chính, và hợp nhất nó vào mỗi nhánh riêng lẻ mà bạn muốn nó, hoặc bạn sẽ rebase các nhánh riêng lẻ "trên đỉnh của master".

Bạn thậm chí có thể nhận được ưa thích và cherry-pick các cam kết riêng lẻ từ một chi nhánh thiết lập cụ thể cho một chi nhánh khác, nhưng tôi đang phân tích.

+0

Git theo dõi ảnh chụp nhanh, không thay đổi. – Nayuki

+0

Cảm ơn, đã sửa. – Irfy

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