2010-05-21 89 views
212

Sự khác biệt giữa git pull origin mastergit pull origin/master là gì?Sự khác nhau giữa git pull origin master & git pull origin/master

+1

calmh khá nhiều đã được bảo hiểm, nhưng không trả lời là bạn không bao giờ nên làm 'git pull origin/master'. Nếu bạn muốn kết hợp nhánh từ xa [được lưu trữ cục bộ] 'origin/master', chỉ cần sử dụng' git merge origin/master'. – Cascabel

+3

@Jefromi: Bạn có thể giải thích tại sao nó luôn luôn tốt hơn để làm git merge so với git pull? – Rachel

+13

'git pull' có nghĩa là' git fetch' theo sau là 'git merge'. Nó lấy nội dung từ xa, sau đó kết hợp nó vào nhánh hiện tại của bạn. Nhưng 'origin/master' là một nhánh địa phương (theo dõi nhánh từ xa). Nếu bạn muốn hợp nhất nó, bạn không cần phải lấy bất cứ thứ gì. Thật sai lầm khi nói 'git pull origin/master' khi bạn không thực sự tìm nạp từ xa. – Cascabel

Trả lời

257

git pull origin master sẽ kéo các thay đổi từ chi nhánh từ xa origin từ xa, master và hợp nhất chúng vào chi nhánh đã kiểm tra tại địa phương.

git pull origin/master sẽ kéo các thay đổi từ chi nhánh được lưu trữ cục bộ origin/master và hợp nhất vào chi nhánh đã thanh toán cục bộ. Chi nhánh origin/master về cơ bản là một "bản sao được lưu trong bộ nhớ cache" của nội dung được kéo lần cuối từ origin, đó là lý do tại sao nó được gọi là nhánh từ xa trong giao diện git. Điều này có thể hơi khó hiểu.

Bạn có thể xem các chi nhánh nào có sẵn với git branchgit branch -r để xem "nhánh từ xa".

+0

trong trường hợp 'git pull origin master' sẽ luôn hợp nhất với nhánh master, cho phép nói trên nhánh khác trong repo của tôi và sau đó đang thực hiện lệnh trên, nó sẽ cập nhật nhánh hiện tại của tôi với các thay đổi từ xa gốc hay nhánh master của tôi với những thay đổi? – Rachel

+0

Câu trả lời của tôi thực sự hơi sai. :) Tôi đã cập nhật nó. Câu trả lời cho câu hỏi của bạn là trong cả hai trường hợp, nó sẽ hợp nhất với nhánh hiện tại của bạn. Để tránh hợp nhất với nhánh hiện tại của bạn, bạn cần 'git fetch' và' git merge' riêng biệt. –

+3

@calmh: 'git merge' (và do đó' git pull') luôn hợp nhất vào nhánh hiện tại. Để hợp nhất với một thứ khác với nhánh hiện tại của bạn, chỉ cần kiểm tra nó trước. – Cascabel

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