Trong nhiều quy trình công việc git, tất cả các thay đổi đối với mã của bạn cuối cùng sẽ kết thúc ở nhánh master
. Bạn cũng có thể có một nhánh
git push -f origin develop:master0 chứa các thay đổi mã chưa sẵn sàng để triển khai sản xuất
Vì lý do này hay lý do khác, bạn có thể rơi vào tình huống khi
git push -f origin develop:master0 của bạn đã thay đổi quá nhiều đến mức bạn không còn có thể dễ dàng hợp nhất nó với
master
. Hầu hết những lý do đó gợi ý các thực tiễn không tốt, nhưng tình huống như vậy cũng có thể phát sinh do các thay đổi được đưa vào quy trình triển khai hoặc quy trình làm việc git của bạnMột cách thoát khỏi tình trạng tiến thoái lưỡng nan này là thay thế hoàn toàn master
bằng
git push -f origin develop:master0 hiện tại. Có hai cách để đạt được điều đó
Chiến lược hợp nhất 'Của chúng ta'
Bạn có thể sử dụng các lệnh sau để hợp nhất develop thành master bằng cách sử dụng chiến lược hợp nhất 'của chúng tôi'
git checkout develop git merge -s ours master git checkout master git merge develop
Kết quả master
bây giờ sẽ chứa nội dung của
git push -f origin develop:master0 trước đó của bạn và bỏ qua tất cả các thay đổi trong
master
Ưu điểm của phương pháp này là bạn có được cam kết hợp nhất rõ ràng và các nhà phát triển khác sử dụng hai nhánh đó sẽ ít gặp sự cố hơn khi hợp nhất các nhánh tính năng của họ
Nhược điểm là việc hợp nhất này có thể thất bại nếu
git push -f origin develop:master0 và
master
của bạn khác nhau ở mức độ lớnlực đẩy
Một giải pháp thay thế tàn bạo hơn là buộc đẩy nhánh
git push -f origin develop:master0 dưới một tên khác
git push -f origin develop:master
Sử dụng cờ
git push -f origin develop:master4,
master
trước đó của bạn được ghi đè hoàn toàn bằng git push -f origin develop:master0, bao gồm cả lịch sử của nó. Cảnh báo. điều này sẽ xóa tất cả các cam kết từ nhánh
master
không nằm trong nhánh git push -f origin develop:master0
Giải pháp này có thể phù hợp với trường hợp của bạn nếu bạn có một số ít chi nhánh khác và/hoặc các nhà phát triển khác. Nhược điểm của phương pháp này là tất cả các nhà phát triển đã có bản sao cục bộ của nhánh chính sẽ cần thực hiện một
git push -f origin develop:master9
Buộc đẩy nhánh chính có thể thất bại nếu bạn sử dụng tính năng “Các nhánh được bảo vệ” của GitLab. Bạn có thể đảm bảo rằng người dùng của mình có quyền phù hợp hoặc tắt tính năng bảo vệ trong vài giây cho đến khi các thay đổi của bạn được lưu
Git được sử dụng để theo dõi mã nguồn mà chúng tôi đang sử dụng;
Khi chúng tôi phát triển các tính năng mới, lịch sử của chúng sẽ nằm trong tầm tay của chúng tôi, vì nó rất hữu ích trong việc phát triển bất kỳ ứng dụng hoặc tài liệu nào
Git có hai cách để trộn các thay đổi từ nhánh này sang nhánh khác. Một là ____25, và cái kia là ____26 với bất kỳ nhánh nào vào nhánh kho lưu trữ khác
Bài viết này sẽ thảo luận về việc hợp nhất hoàn toàn nhánh master
trong Git từ nhánh kho lưu trữ khác
Trong khi sử dụng quy trình công việc Git, những thay đổi mà chúng tôi đã thực hiện đối với mã của mình cuối cùng phải được kết thúc trong nhánh master
khi hoàn thành các tác vụ của ứng dụng
Chúng tôi cũng phải hiểu rằng chúng tôi có thể có một số nhánh khác mà chúng tôi đã phát triển, chứa các thay đổi về mã chưa sẵn sàng để triển khai sản xuất và chúng tôi đã đặt tên cho nhánh này là
git push -f origin develop:master9 theo yêu cầu và quy tắc của tổ chức
Trong một số trường hợp, chúng tôi đã thực hiện quá nhiều thay đổi trong nhánh
git push -f origin develop:master9 của mình và sau đó, chúng tôi gặp khó khăn khi kết hợp nhánh
git push -f origin develop:master9 với nhánh
master
của mình; Một cách để khắc phục tình trạng bận rộn này là thay thế hoàn toàn chi nhánh master
của chúng tôi bằng chi nhánh
git push -f origin develop:master9. Chúng ta có thể thực hiện nó theo hai cách được giải thích dưới đây
Hợp nhất chiến lược thành git push -f origin dev: master
2
git push -f origin dev: master
Để thực hiện chiến lược này, trước tiên chúng tôi sẽ thực hiện các lệnh sau để hợp nhất nhánh
git push -f origin develop:master9 vào nhánh
master
với sự trợ giúp của chiến lược hợp nhất git push -f origin dev: master
5, như saugit checkout dev
git merge -s ours master
git checkout master
git merge dev
Tùy chọn
git push -f origin dev: master
6 trong hợp nhất nhằm thay thế lịch sử cũ của các nhánh tính năng. Bây giờ master
của chúng tôi sẽ có tất cả nội dung của git push -f origin develop:master9 của chúng tôi và bỏ qua tất cả các thay đổi trong
master
Bằng cách áp dụng phương pháp này, chúng tôi sẽ nhận được một cam kết hợp nhất sạch sẽ và an toàn;
Mặt khác, nhược điểm của phương pháp này là sự hợp nhất này có thể không hoạt động nếu nhánh
git push -f origin develop:master9 và nhánh
master
của chúng tôi đã tỏa ra quy mô lớn hơn trong một dự ánlực đẩy
Tùy chọn khác là buộc đẩy nhánh
git push -f origin develop:master9 dưới một tên khác, nhưng phương pháp này khác xa so với vấn đề đã thảo luận ở trên
git push -f origin dev: master
Với sự trợ giúp của cờ alias
git push -f origin develop:master53 được đề cập trong lệnh, nhánh trước đó của chúng ta là
master
được ghi đè hoàn toàn bằng nhánh git push -f origin develop:master9, bao gồm cả lịch sử
Chúng ta phải rất cẩn thận khi áp dụng phương pháp trên vì nó sẽ loại bỏ tất cả các xác nhận có trong nhánh master
vì chúng cũng không có sẵn trong nhánh
git push -f origin develop:master9 của kho lưu trữ