Để hợp nhất nhánh hiện tại vào nhánh khác mà không cần kiểm tra nhánh khác:
Hợp nhất chuyển tiếp nhanh
Điều này thực sự dễ dàng. Theo định nghĩa, hợp nhất chuyển tiếp nhanh chỉ đơn giản là con trỏ nhánh được di chuyển về phía trước trong cây cam kết. Vì vậy, tất cả những gì bạn cần làm chỉ là mô phỏng rằng:
git branch -f master dev
Hãy cẩn thận: Điều này giả định rằng master
chỉ ra một cam kết cũng thuộc dev
nhánh hoặc một số nhánh khác. Nếu không, bạn có nguy cơ mất việc! Không giống như git merge
sẽ tạo ra một cam kết hợp nhất (hoặc khiếu nại) khi không thể chuyển tiếp nhanh, phương thức này âm thầm buộc con trỏ nhánh trỏ đến một cam kết khác.
Điều này cũng giả sử bạn là người duy nhất làm việc trên repo và / hoặc bạn biết bạn đang làm gì.
Mẹo: Nếu bạn đã thực hiện git fetch
và bạn có các cam kết mới origin/master
, bạn có thể di chuyển master
chi nhánh mà không cần kiểm tra bằng cách sử dụng:
git branch -f master origin/master
Hợp nhất thông qua cam kết hợp nhất
Không phải lúc nào cũng khả thi. Để tạo một cam kết hợp nhất, bạn phải thực hiện một thao tác hợp nhất. Và để thực hiện thao tác hợp nhất, bạn nên có các xác nhận trong nhánh khác không thuộc nhánh hiện tại.
Nếu bạn có các cam kết trong master
chi nhánh không thuộc dev
chi nhánh, bạn có thể:
Tuyên bố miễn trừ trách nhiệm: Đây chỉ là một bằng chứng về khái niệm, chỉ để cho thấy đôi khi có thể thực hiện hợp nhất với chi nhánh khác mà không cần kiểm tra. Nếu bạn muốn sử dụng nó hàng ngày, có lẽ bạn muốn tạo bí danh cho nó bằng cách sử dụng chuyển hướng shell hoặc tạo một kịch bản shell cho nó. Sau đó, một lần nữa, bạn cũng có thể tạo một kịch bản shell cho quá trình ngắn hơn được hiển thị trong câu hỏi.
git checkout -b temp
git merge --no-ff -e master
git branch -f master temp
git checkout dev
git branch -D temp
Giải trình:
- Kiểm tra một nhánh tạm thời trỏ đến cùng một cam kết như nhánh hiện tại.
Hợp nhất master
vào nhánh tạm thời và khởi chạy trình soạn thảo thông báo cam kết. Nếu bạn muốn cam kết hợp nhất trông giống như bạn đã hợp nhất dev
chi nhánh vào master
, hãy chỉnh sửa nó từ đây:
Merge branch 'master' into temp
đến đây:
Merge branch 'dev'
Mẹo: Bạn có thể sử dụng -m "Merge branch 'dev'"
thay vì -e
để nhanh hơn.
- Cập nhật
master
con trỏ nhánh để trỏ đến cam kết hợp nhất.
- Kiểm tra
dev
chi nhánh.
- Buộc xóa chi nhánh tạm thời.
Điều này vẫn chạm vào cây làm việc của bạn, nhưng tối thiểu là như vậy. Nó không quay ngược lại cây cho đến trạng thái ban đầu master
chỉ để mang lại sự thay đổi phát triển một lần nữa. Một số có thể không quan tâm, nhưng đối với những người khác nó có thể quan trọng.