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

Git pull được phối hợp từ hai lệnh Git fetch và Git merge nhằm tạo sự thuận tiện cho tất cả những người dùng trong quá trình sử dụng. Vậy Git pull là gì và được sử dụng thế nào? Cùng Bizfly Cloud tìm hiểu về lệnh Git pull trong nội dung bài viết hôm nay nhé.

Git pull là gì?

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à update local repository sao cho phù phù hợp với nội dung đó. Thống nhất các thay đổi remote upstream vào local repository là một nhiệm vụ phổ quát trong các luồng công việc hợp tác dựa trên Git. Lệnh Git pull sự phối hợp của hai lệnh git fetch và git merge. Trong thời đoạn trước hết 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 thống nhất. Một cam kết thống nhất mới sẽ tiến hành tạo và HEAD được update để trỏ đến cam kết mới (commit).

Git pull hoạt động 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 để thống nhất các remote content ref và head vào một trong những local merge commit mới. Để thể hiện rõ hơn quá trình kéo (pull) và sáp nhập (merge), tất cả chúng ta hãy xem xét ví dụ sau. Giả sử tất cả 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.

Trong trường hợp này, Git pull sẽ tải xuống tất cả những 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 này sẽ tạo ra một local merge commit mới chứa nội dung của nhiều remote commit được chuyển hướng mới.

Trong sơ đồ trên, tất cả 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 nhiều remote commit A-B-C và có thông tin log message. Ví dụ này là một trong một vài chiến lược thống nhất git pull. Tùy chọn -rebase có thể được chuyển cho Git pull để sử dụng chiến lược thống 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 tất cả chúng ta đang ở sơ đồ trước hết và đã thực hiện git pull -rebase.

Trong sơ đồ này, tất cả 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.

Git pull khác với Git fetch thế nào?

Git pull và Git fetch là 2 lệnh có chức năng khá tương tự nhau, đều được sử dụng để tải về tài liệu mới từ một Remote repository. Tuy vậy, Git fetch thường được xem như phiên bản an toàn hơn của Git pull.

Git fetch được cho phép người dùng tải xuống nội dung từ remote repository mà không làm ảnh hưởng tác động đến trạng thái của local repository. Trong lúc đó, lệnh Git pull sẽ thực hiện tải xuống nội dung, song song thay đổi trạng thái của Local repository sao cho phù phù hợp với nội dung đó. Điều này còn có thể gây ra hiện tượng lạ xung đột thống nhất (merge-conflict) trong Git.

Git fetch thường được sử dụng trong trường hợp có nhiều người dùng thao tác trên cùng một nhánh. Còn với Git pull, bạn nên làm sử dụng khi chỉ có một mình bạn thao tác trên nhánh và trên một thư mục thao tác sạch (thư mục không có thay đổi đã được cam kết).

Các tùy chọn phổ quát

git pull <remotevàgt;

Lấy bản sao từ xa được chỉ định của nhánh ngày nay và ngay tức thì thống nhất nó vào bản sao local. Điều này giống như git fetch <remotevàgt; theo sau là git merge origin/<current-branchvàgt;.

git pull -no-commit <remotevàgt;

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 <remotevàgt;

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 rõ ràng thống 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.

You May Also Like

About the Author: v1000