Git Fetch vs Pull
Cập nhật lần cuối
git fetch tải các commit mới nhất từ remote nhưng giữ nguyên nhánh bạn đang làm việc. git pull cũng tải như vậy rồi merge ngay các commit đó vào nhánh hiện tại. Nói ngắn gọn: git pull = git fetch + git merge.
Dùng fetch khi muốn xem trước rồi mới quyết định; dùng pull khi đã sẵn sàng tích hợp. Thử cả hai trong playground terminal: một shell thật ngay trên trình duyệt.
So sánh song song
| Hành vi | git fetch | git pull |
|---|---|---|
| Tải commit từ remote | Có | Có |
| Thay đổi nhánh hiện tại | Không | Có |
| Có thể gây xung đột merge | Không | Có |
| Tương đương với | chỉ tải về | fetch + merge |
Cú pháp
| Lệnh | Tác dụng |
|---|---|
git fetch | Tải mọi thay đổi từ remote, không merge |
git fetch origin main | Chỉ fetch một nhánh từ remote |
git pull | Fetch và merge vào nhánh hiện tại |
git pull --rebase | Fetch, rồi rebase các commit của bạn lên trên |
git log HEAD..origin/main | Sau khi fetch: xem những gì sẽ được merge |
Câu hỏi thường gặp về git fetch và pull
git fetch và git pull khác nhau thế nào?
git fetch tải các commit mới và cập nhật các nhánh remote-tracking (như origin/main) nhưng không thay đổi nhánh bạn đang làm việc. git pull cũng fetch như vậy rồi merge các commit mới vào nhánh hiện tại. Vì thế pull làm thay đổi tệp của bạn, còn fetch chỉ cập nhật những gì bạn biết về remote.git pull có phải chỉ là fetch cộng merge?
Khi nào nên dùng fetch thay cho pull?
git fetch khi bạn muốn xem lại các thay đổi sắp đến trước khi tích hợp, chẳng hạn chạy git fetch rồi git log HEAD..origin/main để thấy chính xác những gì mới. Dùng git pull khi bạn đã tin tưởng các thay đổi trên remote và chỉ muốn merge chúng vào nhánh của mình.git fetch có bao giờ gây xung đột không?
Không. Fetch chỉ cập nhật các nhánh remote-tracking; nó không bao giờ đụng đến nhánh đang làm việc hay các tệp của bạn, nên không thể gây xung đột merge. Xung đột chỉ phát sinh ở bước merge, bước mà pull tự động thực hiện còn fetch thì không.
Có thể luyện tập lệnh này online không?
git fetch và git pull trong một shell thật ngay trên trình duyệt, không cần cài đặt gì. Khóa học Git tương tác miễn phí của Coddy cũng hướng dẫn làm việc với remote từng bước.