git merge origin/master
có thể thực hiện một trong hai điều (hoặc lỗi).
Trong trường hợp đầu tiên, nó tạo ra một cam kết mới có hai cha mẹ: HEAD
hiện tại và cam kết được chỉ định bởi ref origin/master
(trừ khi bạn đang làm điều gì đó vui nhộn, đây có thể là (con trỏ cục bộ đến) chi nhánh có tên master
trên điều khiển từ xa có tên origin
, mặc dù điều này hoàn toàn thông thường).
Trong trường hợp thứ hai, khi không có phối cảnh cấp cây cần thiết, thay vì tạo một cam kết mới, nó cập nhật ref hiện được kiểm tra để trỏ đến cùng một cam kết như được chỉ dẫn bởi origin/master
. (Điều này được gọi là nhanh chóng chuyển tiếp hợp nhất - git có thể được chuyển hướng đến việc luôn luôn hoặc không bao giờ thực hiện điều này khi bạn hợp nhất thông qua cờ dòng lệnh).
Nó không gọi trực tiếp số git commit
, đó là lệnh cấp cao hơn (sứ trong lệnh git-parlance) dành cho người dùng.
Calling git merge master/original
sẽ cố gắng và giải quyết master/original
đến một cam kết, mà sẽ gần như chắc chắn (một lần nữa, trừ khi bạn đã làm điều gì đó cố ý) không được giống như origin/master
. Nếu bạn tình cờ có một điều khiển từ xa có tên là master
có một chi nhánh có tên là original
, nó sẽ tạo một cam kết mới có đó là phụ huynh thứ hai.
Bạn có thể tìm thấy git help rev-parse
để giúp giải mã cách git cố gắng giải quyết tên ref hoặc ký hiệu khác thành cam kết.
Nguồn
2012-06-21 01:25:42
Bạn thực sự phải tự làm việc thông qua [Sách] (http://git-scm.com/book/en/Git-Branching-Remote-Branches). – kostix