Fetch vs Pull
Fetch vs Pull
Cả git fetch và git 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í | fetch | pull |
|---|---|---|
| Tải commit về | Có | Có |
| Gộp vào nhánh hiện tại | Không | Có |
| Đụng code đang làm | Không | Có thể |
| Mức an toàn | Cao | Thấp hơn |
| Tương đương | — | fetch + 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.