Sự khác biệt giữa `git fetch origin` và` git remote update origin` là gì?


115

Để trả lời câu hỏi về việc kéo từng cam kết một từ kho lưu trữ git , tôi được khuyến nghị sử dụng git remote updatethay vì git fetch. Tôi đã đọc cả hai trang người đàn ông nhưng không thể nói rằng tôi đã hiểu toàn bộ.

Bất cứ ai có thể giải thích cho tôi làm thế nào git fetch originget remote update origincư xử khác nhau?


Câu trả lời:


133

Không có gì khác biệt khi sử dụng như thế này.

remote updatelà một lệnh cấp rất cao - nó hỗ trợ các điều khiển từ xa được nhóm ( remotes.<group> = <list>) và cập nhật tất cả các điều khiển từ xa (ngoại trừ những điều remote.<name>.skipDefaultUpdateđã được thiết lập), nhưng không hỗ trợ bất kỳ tùy chọn tìm nạp cụ thể nào. Tuy nhiên, dưới mui xe, nó hoạt động giống hệt như tìm nạp với các tùy chọn mặc định.

Câu trả lời đề xuất remote updatethay vì tìm nạp git thực sự đề xuất nó mà không có tên từ xa, chỉ vì mục đích tìm nạp tất cả, không chỉ tên được đặt tên như một đối số. Điều này tương đương với git fetch --all.

Tôi nên thêm thông báo trước rằng tìm nạp và cập nhật từ xa không thực sự sử dụng cùng một đường dẫn cho đến v1.6.6.1 (phát hành ngày 23 tháng 12 năm 2009). Mặc dù vậy, ngay cả trước đó, về cơ bản họ đã làm giống nhau, chỉ sử dụng mã khác nhau (có thể hoạt động hơi khác trong các trường hợp góc, nhưng tôi không thể nghĩ ra bất kỳ điều gì ngoài đầu mình).


1
Rất thú vị. +1. Nếu bạn nhìn vào ghi chú phát hành Git (mà tôi đã biên dịch ở đây: pastebin.com/LNhRhQS3 ), có vẻ như chỉ 1.7.0 (ngay sau 1.6.6.2) cho phép " git fetch --all" được sử dụng thay cho " git remote update".
VonC

Ah, tôi đã không thực sự kiểm tra khi truy cập fetch --all. Tôi thực hiện tất cả điều này chỉ bằng các biến thể của git log --grep=...git describe --containstrong bản sao git.git của mình.
Cascabel

Hm, điều đó thật kỳ lạ - commit 9c4a036b là "Dạy tùy chọn --all thành 'git fetch'" và git mô tả --contains cung cấp v1.6.6.1~1^2~9. (Bản phát hành tương tự như thay đổi cập nhật từ xa mà tôi đã đề cập trong câu trả lời của mình, được cập nhật để thêm phiên bản phát hành nhỏ ở đó). Có lẽ nó chỉ là muộn để nhận được các ghi chú phát hành?
Cascabel

@Jefromi: cách hay để khai thác thông tin đó, nhưng tôi thích xem trước các ghi chú phát hành hơn và đã rất thất vọng vì thiếu một trang cho tất cả các ghi chú phát hành, do đó, tôi đã copy-paste một chút.
VonC

@Jefromi: ngay ... bây giờ tôi phải tìm cách tổng hợp tất cả "những gì đang nấu trong Git" để xem tại sao commit 9c4a036b không xuất hiện trong bản phát hành chính thức trước ngày 1.7;)
VonC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.