5 phút đọc

Fetch vs Pull

Fetch vs Pull

Cả git fetchgit pull đều lấy commit từ remote, nhưng khác nhau ở chỗ có gộp ngay hay không.

git fetch: chỉ tải về

Fetch tải commit mới từ remote, cập nhật nhánh theo dõi remote (như origin/main), nhưng không thay đổi nhánh bạn đang làm việc. An toàn tuyệt đối — code đang làm không bị đụng.

# Tải về, xem trước rồi mới quyết định gộp
git fetch origin
git log main..origin/main --oneline

git pull: fetch rồi merge

Pull = git fetch + git merge. Nó tải về và gộp ngay nhánh remote vào nhánh hiện tại, có thể tạo merge commit hoặc gây xung đột cần giải quyết.

# Tải và gộp luôn vào nhánh hiện tại
git pull origin main

Biến thể git pull --rebase thay merge bằng rebase cho lịch sử thẳng.

So sánh

Tiêu chífetchpull
Tải commit về
Gộp vào nhánh hiện tạiKhông
Đụng code đang làmKhôngCó thể
Mức an toànCaoThấp hơn
Tương đươngfetch + merge

Cách nhớ nhanh

fetch = đi chợ mua đồ về để tủ lạnh (chưa nấu, chưa đụng bữa đang ăn). pull = mua về rồi nấu luôn cho vào bữa (fetch + merge). Muốn xem trước thì fetch; muốn nhanh gọn thì pull.