Lệnh git pull và git fetch được dùng để cập nhật dữ liệu mới từ kho chứa ở remote về kho chứa local. Để thực hiện lệnh này tất nhiên bạn phải có kho chứa ở remote và local đã liên kết với nhau. Bạn cần hiểu về remote repository trước!
Lệnh git fetch
Lệnh git fetch
tải về dữ liệu từ Remote Repo
(kho chứa từ xa - trên server/dịch vụ lưu repo, các dữ liệu như các commit, các file, refs).
Các dữ liệu này được lấy về và nó lưu vào kho chứa local (trong Repository - thư mục .git),
nó không tác động gì đến thư mục đang làm việc (Working Directory - Workspace).
Bạn dùng git fetch
khi cần lấy dữ liệu từ remote để lưu trữ,
theo dõi các commit người khác đã cập nhật lên server,
để có được thông thông tin khác nhau giữa remote và local mà không ảnh hưởng đến luồng công việc
bạn đang thực hiện
Kho chứa của bạn tên origin, tải về tất cả thông tin của nó từ remote:
git fetch origin
Hoặc
git fetch --all
Hình ảnh trực quan đường đi dư liệu của get fetch và git pull
Tải thông tin của một nhánh cụ thể, ví dụ master của remote origin
git fetch origin master
Sau khi tải về, để có thể khám phá sự khác biệt giữa local và remote bạn có thể xem trạng thái của thư mục làm việc, xem log của một nhánh local và log của nhánh remote ...
Ví dụ: đang làm việc trên master
git log --oneline origin/master # xem log nhánh master của remote origin git log --oneline master # xem log nhánh master của local origin git status # xem log nhánh master của local origin
Sau khi kiểm tra sự khác biệt của nhánh giữa remote và local, bạn có thể đánh giá sự thay đổi của dữ liệu, từ đó có các hành động tiếp theo, có thể có vài tình huống:
Trường hợp 1: Thư mục làm việc ở trạng thái Clean (working tree clean - không có thay đổi dữ liệu, hoặc bạn đã commit các thay đổi nếu có). Để cập nhật dữ liệu mới tải kết hợp với Workspace.
git pull origin master # phải có kết nối mạng để cập nhật hoặc git merge origin/master # không cần kết nối mạng, cập nhật từ dữ liệu lấy về từ fetch
Trường hợp 2: Đang làm việc có sự thay đổi ở Workspace - để cập dữ liệu bạn cần thực hiện commit hoặc bỏ các thay đổi (để working tree clean) rồi thực hiện trường hợp 1
Các Video: Sử dụng Git, GitHub
Lệnh git pull
Lệnh git pull
lấy về thông tin từ remote và cập nhật
vào các nhánh của local repo (thực hiện lưu vào Repository tức .git và Workspace).
Thi hành lệnh:
git pull
Hoặc chỉ rõ remote
git pull origin
Git tải về thông tin từ remote và ngay lập tức merge cho nhánh đang làm việc.
Lệnh git pull
nó tương đương thi hành luôn hai lệnh
git fetch
và git merge
git fetch origin git merge origin/master
Bạn có thể viết lại lịch sử commit của nhánh đang làm việc, cập nhật toàn bộ nhánh remote là base của nó thì thực hiện.
git pull --rebase origin