2009-10-06 44 views
5

Kịch bản sử dụng điển hình:Cam kết thay đổi cho nhiều chi nhánh trong Git

Tôi có master, branch_foo và branch_bar. Tất cả đều được cập nhật. Bây giờ, tôi làm một "git checkout Master" và làm việc trên một sửa lỗi.

Cho phép nói rằng sửa chữa nằm trên tệp được theo dõi ở trạng thái giống nhau trên tất cả các nhánh - ví dụ: trước khi sửa chữa, một khác biệt của tập tin từ mỗi chi nhánh kết quả không có sự khác biệt.

Có cách nào để khắc phục sự cố này cho tất cả các chi nhánh không?

Trả lời

5

Tôi mong đợi git cherry-pick là những gì bạn muốn.

Sau khi cam kết sửa chữa nhánh đầu tiên, bạn có thể sử dụng git cherry-pick để hợp nhất vào mỗi nhánh khác.

này câu hỏi liên quan về SO có thể quan tâm: Git & Working on multiple branches

+0

Vâng tôi nghĩ về git cherry-pick. Chỉ cần tự hỏi nếu có một cách nhanh hơn. – Carl

+0

Cảm ơn :) Câu hỏi liên quan là chính xác những gì tôi cần. – Carl

9

Cách tiếp cận chung để này là "sáp nhập trở lên". Từ man gitworkflows:

Luôn cam kết các bản sửa lỗi cho chi nhánh được hỗ trợ lâu đời nhất yêu cầu chúng. Sau đó (định kỳ) hợp nhất các nhánh tích hợp lên trên với nhau.

Điều này cung cấp một luồng kiểm soát rất có kiểm soát. Nếu bạn nhận thấy rằng bạn đã áp dụng bản sửa lỗi cho ví dụ: bậc thầy cũng được yêu cầu trong maint, bạn sẽ cần phải cherry-pick nó (sử dụng git-cherry-pick (1)) xuống dưới. Điều này sẽ xảy ra một vài lần và không có gì phải lo lắng trừ khi bạn làm điều đó rất thường xuyên.

Phương pháp đầu tiên được ưu tiên tất nhiên - bạn chỉ nên thực hiện một lần commit trong repo của bạn một lần và có thể xem lịch sử của nó trong mỗi nhánh. Cuộc sống không hoàn hảo, mặc dù, và đôi khi bạn sẽ thấy mình trong thể loại thứ hai. Nếu tình huống đó trở nên phổ biến, bạn có thể viết một kịch bản như

multi-cherry-pick <commit> <branch> [<branch>...] 

để kiểm tra từng nhánh rẽ và anh đào chọn cam kết đã cho.

5

Có, có. Thực hiện cam kết này trên chủ đề riêng biệt (tính năng) chi nhánh (phân nhánh nhánh cũ nhất/tiểu bang sớm nhất), sau đó hợp nhất nhánh chủ đề này vào bất kỳ chi nhánh nào bạn muốn.

Quy trình làm việc này được mô tả ví dụ trong Never merging back bài đăng trên blog của Junio ​​C Hamano (người duy trì Git).

Đó là khoảng những gì Jefromi wrote viết

+0

Cảm ơn. Vâng, tôi đã kết thúc bằng cách sử dụng các ngành chủ đề. Câu trả lời được chấp nhận cho câu hỏi mà Tim hướng dẫn tôi cũng được viết bởi bạn và chính xác là những gì tôi cần :) – Carl

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