GIT 10 - Git fetch - Git pull

 GIT FETCH

Lệnh git fetch tải về dữ liệu từ Remote Repo.



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

 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


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

Post a Comment