Trang chủ Cloud Computing

Git pull là gì? Khác gì với git fetch

Lệnh git pull được sử dụng để tìm nạp (fetch) và tải xuống nội dung từ remote repository và cập nhật local repository sao cho phù hợp với nội dung đó. Hợp nhất các thay đổi remote upstream vào local repository là một nhiệm vụ phổ biến trong các luồng công việc cộng tác dựa trên Git. Lệnh git pull sự kết hợp của hai lệnh git fetch và git merge. Trong giai đoạn đầu tiên của hoạt động, git pull sẽ thực thi một git fetch nằm trong phạm vi nhánh cục bộ mà HEAD được chỉ vào. Khi nội dung được tải xuống, git pull sẽ nhập workflow hợp nhất. Một cam kết hợp nhất mới sẽ được tạo và HEAD được cập nhật để trỏ đến cam kết mới (commit).

Git Pull hoạt động như thế nào?

Lệnh git pull trước tiên chạy git fetch để tải nội dung từ remote repository đã chỉ định. Sau đó, một git merge được thực thi để hợp nhất các remote content ref và head vào một local merge commit mới. Để thể hiện rõ hơn quá trình kéo (pull) và sáp nhập (merge), chúng ta hãy xem xét ví dụ sau. Giả sử chúng ta có một kho lưu trữ với một nhánh chính và một nguồn từ xa.

Git pull là gì? Khác gì với git fetch - Ảnh 1.

Trong trường hợp này, git pull sẽ tải xuống tất cả các thay đổi từ điểm mà local và master chuyển hướng. Trong ví dụ này, điểm đó là E. git pull sẽ tìm nạp các remote commit được chuyển hướng là A-B-C. Quá trình pull sau đó sẽ tạo ra một local merge commit mới chứa nội dung của các remote commit được chuyển hướng mới.

Git pull là gì? Khác gì với git fetch - Ảnh 2.

Trong sơ đồ trên, chúng ta có thể thấy commit mới H. Commit này là một merge commit mới chứa nội dung của các remote commit A-B-C và có thông báo log message. Ví dụ này là một trong một vài chiến lược hợp nhất git pull. Tùy chọn --rebase có thể được chuyển cho git pull để sử dụng chiến lược hợp nhất rebase thay vì merge commit. Ví dụ tiếp theo sẽ cho thấy cách rebase pull hoạt động. Giả sử rằng chúng ta đang ở sơ đồ đầu tiên và đã thực hiện git pull --rebase.

Git pull là gì? Khác gì với git fetch - Ảnh 3.

Trong sơ đồ này, chúng ta có thể thấy rằng một rebase pull không tạo ra H commit mới. Thay vào đó, rebase đã sao chép các remote commits A--B--C và gắn chúng vào local origin/master commit history.

Các tùy chọn phổ biến

git pull <remote>

Lấy bản sao từ xa được chỉ định của nhánh hiện tại và ngay lập tức hợp nhất nó vào bản sao local. Điều này giống như git fetch <remote> theo sau là git merge origin/<current-branch>.

git pull --no-commit <remote>

Tương tự như lời gọi mặc định (default invocation), tìm nạp remote content nhưng không tạo ra một merge commit mới.

git pull --rebase <remote>

Tương tự như pull trước, Thay vì sử dụng git merge để tích hợp nhánh từ xa với nhánh cục bộ, hãy sử dụng git rebase.

git pull --verbose

Cung cấp verbose output khi pullo, hiển thị nội dung được tải xuống và các chi tiết hợp nhất.

Git pull và syncing

git pull là một trong nhiều lệnh yêu cầu "đồng bộ hóa" remote content. Lệnh git remote được sử dụng để xác định remote endpoint nào mà các lệnh đồng bộ hóa sẽ hoạt động. Lệnh git push được sử dụng để tải nội dung lên remote repository.

Lệnh git fetch có thể bị nhầm lẫn với git pull. Cả hai đều được sử dụng để tải về remote content. git fetch có thể được coi là tùy chọn "an toàn" trong khi đó, git pull có thể được coi là không an toàn. git fetch sẽ tải xuống remote content và không làm thay đổi trạng thái của local repository. Ngoài ra, git pull sẽ tải xuống remote content và ngay lập tức cố gắng thay đổi local state để phù hợp với nội dung đó. Điều này có thể vô tình khiến local repository rơi vào trạng thái xung đột.

Nguồn: tech.vccloud.vn

>> Có thể bạn quan tâm: Onedrive là gì? Đám mây kết nối tất cả các sản phẩm và dịch vụ của Microsoft

Kể từ ngày 05/11/2018, VCCloud chính thức đổi tên thành BizFly Cloud - là nhà cung cấp các dịch vụ đám mây hàng đầu tại Việt Nam hiện nay với các dịch vụ nổi bật như: BizFly Cloud Server, BizFly CDN, BizFly Load Balancer, BizFly Pre-built Application, BizFly Business Mail, BizFly Simple Storage. Hãy tăng tốc thích nghi cho doanh nghiệp cùng các giải pháp công nghệ của BizFly Cloud tại đây.