Phần tóm tắt dưới đây: Tôi muốn đẩy thư cam kết tới cây con, nhưng chỉ các thư áp dụng cho cây đó. Làm thế nào để tôi làm điều này?git subtree đẩy các thay đổi về dự án subtree
Tôi có hai dự án, Master
và Slave
. Slave
được kiểm tra như một cây con của Master
kiểm tra ra để lib/slave
qua git subtree merge --prefix=lib/slave --squash projects/slave
nơi projects/slave
là một chi nhánh Slave
được kiểm tra ra vào:
Chi nhánh:
chủ dự án/slave → nô lệ
Bây giờ tôi đang làm việc trên chi nhánh master
của tôi, thực hiện cam kết các tệp là một phần của cả hai dự án, mọi thứ diễn ra suôn sẻ. Bây giờ tôi muốn đẩy những thay đổi về Slave
:
- git checkout nô lệ
- git merge ??? master
Nếu tôi kết hợp bình thường, tôi nhận được cam kết cho mọi cam kết làm chủ, có hoặc không có bất kỳ tệp nào trong lib/slave
được sửa đổi. Hoặc tôi có thể làm một số --squash
và chỉ nhận được một cam kết duy nhất, nhưng tôi mất các thông điệp tường trình.
Vậy làm cách nào để nhận được thông báo nhật ký thích hợp? ví dụ. nếu lịch sử đăng nhập master
của tôi là:
- thêm hình ảnh để làm chủ
- file sửa đổi trong nô lệ chỉ
- nhiều thay đổi để làm chủ chỉ
- file sửa đổi trong master và slave
tôi d muốn điều này được thêm vào Slave
:
- file sửa đổi trong nô lệ chỉ
- file sửa đổi trong master và slave
Gitslave (http://gitslave.sourceforge.net/) có thể là một thay thế thú vị trong trường hợp của bạn. – VonC
@VonC - Một trong những vấn đề chính tôi thấy với gitslave là nó có vẻ như là lệnh fork cho mỗi repo, thực hiện một cách hiệu quả 'git commit -m" commit message "' trên mỗi repo.Vì vậy, nếu bất kỳ nhà phát triển nào không sử dụng nó, chúng tôi sẽ gặp sự cố đồng bộ hóa, đúng không? –
Có thể là câu hỏi ngu ngốc nhất trên thế giới, nhưng tại sao không phải là 'git log 'đủ ở đây? Điều đó sẽ chỉ cung cấp cho bạn những thay đổi phù hợp với nhánh nô lệ của bạn khi bạn phát hành nó qua các thư mục của bạn. Là nỗi đau của bạn trong sự thay đổi lộn xộn, hoặc là nó chỉ trong màn hình? –
MrGomez