FresherKỹ thuậtGit
git fetch và git pull khác nhau như thế nào?
Thử trả lời trước
Đáp án mẫu
git fetch tải commit mới về và cập nhật các remote-tracking branch như origin/main, nhưng không đụng tới branch local hay file đang làm việc. git pull là git fetch rồi thêm một bước tích hợp, mặc định là merge hoặc rebase nếu bạn yêu cầu.
git fetch origin # safe, only updates origin/*
git log HEAD..origin/main # inspect incoming commits
git merge origin/main # integrate when ready
git pull # fetch + merge in one step
git pull --rebase # fetch + rebase
Hãy fetch trước khi muốn xem có gì thay đổi trước khi nó vào branch của bạn. Pull tiện khi bạn đã biết mình muốn cập nhật.
Nhiều team đặt git config --global pull.rebase true hoặc pull.ff only để pull không tạo merge commit bất ngờ.
Điều cần nhớ: fetch không ảnh hưởng công việc của bạn, còn pull thay đổi branch hiện tại.
Ý chính
- Fetch chỉ cập nhật remote-tracking branch
- Pull bằng fetch cộng merge hoặc rebase
- Fetch luôn an toàn để chạy
Câu hỏi nối tiếp thường gặp
- pull --rebase thay đổi điều gì?
- Làm sao xem các commit mà fetch mang về?
Lỗi thường gặp
- Nghĩ rằng fetch thay đổi file làm việc
- Chạy pull mà không nhìn và nhận merge commit ngoài ý muốn