2011-11-17 37 views
10

Tôi đang sử dụng phân nhánh để tạo và triển khai các phiên bản nền tảng ngoài tùy chỉnh. Những trường hợp này thường bắt đầu như một nhánh từ nhánh 'master', được tùy chỉnh phần nào, được triển khai vào thử nghiệm và sản xuất, và cuối cùng được lưu trữ.ngăn git hợp nhất thành nhánh chính

Nếu các tính năng mới hoặc sửa lỗi được thêm vào bản gốc, tôi muốn có thể tìm nạp/hợp nhất chúng vào các trường hợp dự án của tôi (nhánh), nhưng tôi gần như không bao giờ muốn hợp nhất các thay đổi từ các nhánh thành bản gốc. Điều này xảy ra gần đây do nhầm lẫn và đã tạo ra một số nhức đầu nghiêm trọng. Một lệnh git pull để cập nhật một kho lưu trữ sáp nhập mọi thứ vào nhánh master và sau đó được đẩy trở lại repo chính.

Có cách nào dễ dàng để cấm hợp nhất lại vào trang cái không? Hoặc ít nhất yêu cầu một số --force flag?

Trả lời

2

Bạn có thể đảm bảo không hợp nhất vào tổng thể từ các nhánh khác bằng cách cấm mọi người đẩy nhánh chính. Một người có thẩm quyền có thể làm điều đó. Gitolite là một cái gì đó cho phép bạn tinh chỉnh quyền truy cập vào các chi nhánh. Bạn cũng có thể viết các móc bên máy chủ của riêng mình và từ chối việc cập nhật nhánh chính trừ khi bạn là một người dùng cụ thể.

+0

gì với downvote? Hãy cho tôi biết những gì sai với câu trả lời của tôi và tôi sẽ làm rõ. Cảm ơn. –

+0

Xin chào Adam, tôi không nghĩ rằng tôi đã bỏ phiếu cho câu trả lời của bạn. Tôi thực sự khá chắc chắn rằng tôi đã tăng cường nó. Nhưng nếu tôi mắc lỗi xin lỗi. Ngoài ra Gitolite cũng hơi quá nhiều so với nhu cầu của chúng ta, nhưng tôi có thể thấy cách móc treo phía máy chủ có thể làm những gì tôi cần. – balm

+0

gitolite là đáng ngạc nhiên dễ dàng. Tôi khuyên bạn nên cho nó một spin. Lợi ích lớn nhất là nó đơn giản hóa việc quản lý khóa. Ồ, và tôi không có ý rằng đó là bạn mà downvoted. Bạn không thể nhận được thông tin đó. Tôi đã thực sự tò mò tại sao câu trả lời của tôi đã không làm thỏa mãn một ai đó hoặc nếu tôi có một sai lầm trong đó. –

-1

Nếu bạn chỉ muốn tránh hợp nhất vào tài khoản chính, bạn có thể sử dụng móc hợp nhất trước để cấm nó.

+1

Tôi không tìm thấy bằng chứng cho thấy có bất kỳ thứ gì như một móc nối trước. – pjmorse

1

Git khá vui khi được làm việc với nhiều kho lưu trữ từ xa.

Tôi khuyên bạn nên sử dụng một kho lưu trữ từ xa cho mỗi trường hợp tùy chỉnh. Điều này sẽ không thay đổi quy trình làm việc của bạn, vì Git có thể hợp nhất bất kỳ hai nhánh nào với nhau bất kể nguồn gốc.

Để cập nhật một "dụ tùy chỉnh" với sửa lỗi từ "bậc thầy từ xa" của bạn, bạn muốn gõ một cái gì đó giống như

git checkout <custom-branch> 
git fetch main 
git merge main/master 

nơi main là kho từ xa mà bạn đang đề cập đến như master (Tôi đã thay đổi tên để tránh nhầm lẫn giữa chi nhánh và điều khiển từ xa)

Đối với chi nhánh địa phương của bạn, không chỉ định main làm chi nhánh theo dõi từ xa, thay vào đó chỉ định điều khiển từ xa cụ thể. tức là một kho lưu trữ từ xa cho mỗi trường hợp tùy chỉnh.

Để đẩy những thay đổi để dụ tùy chỉnh của bạn, sử dụng

git push 

Trong trường hợp hiếm hoi khi bạn cần phải đẩy những thay đổi ở thượng nguồn đến "bậc thầy" chi nhánh sử dụng

git push main 
+0

Cảm ơn. Đó chính xác là cách chúng ta làm việc, nhưng bằng cách nào đó ai đó đã làm một cú git push --all và sau đó là một git pull hay một thứ gì đó tương tự như vậy mà đã hợp nhất mọi thứ. Hoặc vì sợ rằng những gì tôi hiểu. – balm

+0

Không sử dụng git pull. Git tìm nạp trước và sau đó hành động tương ứng với các nhánh theo dõi từ xa được cập nhật với việc hợp nhất, rebasing hoặc reset các nhánh nội bộ. –

+0

Tôi đồng ý với Adam, đó là cách tôi làm điều đó. Chỉ cần chắc chắn rằng bạn không rebase sau khi bạn đẩy những thay đổi của bạn hoặc mọi thứ trở nên xấu xí. –

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