Fetch là gì? Làm thế nào để phân biệt được giữa “Git Fetch” và “Git Pull”

Fetch là gì? Đây chắc chắn là câu hỏi của nhiều bạn khi học lập trình khi thấy thuận ngữ này. Vậy nó là gì? Và giữa Git Fetch và Git Pull thì nó khác nhau ở điểm gì? Làm sao để phân biệt được nó. Để tìm ra những câu trả lời trên thì mời các bạn đọc cùng chúng tôi theo dõi ngay qua bài viết dưới đây.

Fetch là gì?

Fetch là một API đơn giản cho việc gửi và nhận request bằng js. Với fetch thì việc xác thực các yêu cầu web và xử lý phản hồi một cách dễ dàng hơn so với XML HTTP Request cũ.

Bạn có thể kiểm tra trình duyệt mà đang sử dụng của mình có được hỗ trợ fetch hay không. Ví dụ như:

Phương thức fetch() nhận đầu vào url để có thể truy vấn rồi trả về response của request đó.

Tìm hiểu về Fetch API

Tại một request

Đầu tiên, chúng ta hãy xem một ví dụ đơn giản về fetch một file JSON:

Chúng ta thêm url cho truy xuất ở dưới dạng parameter để fetch. Trong trường hợp này, url đây là examples/ example.json. Phương thức fetch() sẽ trả về một promise có trạng thái resolves với giá trị đó là response cho request đó.

Khi promise resolve, response sẽ được truyền tới then. Đây là nơi mà bạn có thể sử dụng response. Nếu request mà không thành công thì nó sẽ tiếp tục chuyển đến catch với tham số là lỗi tương ứng.

Response trả về của request chứa kết quả và những thuộc tính hay phương thức hữu ích. Ví dụ: response.ok, response.status và response.statustext đều có thể được sử dụng để đánh giá trạng tháng response.

Để đánh giá sự thành công của response thì đây là điều đặc biệt quan trọng khi mà sử dụng fetch. Vì các bad response vẫn có thể được resolve. Chỉ có duy nhất một trường hợp promise sẽ bị reject đó là request sẽ không thể thực hiện được (không có kết nối mạng). Nếu mà code trước đó đã được update validate sẽ cho responses giống nhau như:

Nếu thuộc tính OK của object sẽ trả về là false thì function sẽ gửi về lỗi gồm response.statusText.

Bạn đọc tham khảo thêm: Android Studio là gì? Cách sử dụng android studio

Đọc response trả về

Responses sẽ có phương thức truy cập vào nội dung trả về. Chẳng hạn như: Response.Json() trả về một promise resolves ở dạng JSON. Thêm bước này vào ví dụ hiện tại sẽ được cập nhập code thành:

Nói một cách dễ hiểu hơn đó là:

Sự khác biệt giữa Git Fetch và Git Pull

Trước khi để phân biệt giữa Git Fetch và Git Pull thì trước hết chúng ta cần biết về cấu trúc của một Git repository trên máy local sẽ gồm có 3 phần đó là:

  • Working copy: Nó chứa các file ở commit hiện tại hay HEAD
  • Staging index: Chứa những thay đổi đã được thêm vào
  • Repository: Chứa những commit version với các file tương ứng.

Cấu trúc của một Git Repository

Câu lệnh git fetch

Khi chạy câu lệnh git fetch $remote origin, Git sẽ được tải về dữ liệu của tất cả những branch của repository trên remote server nằm tại địa$remote origin và được cập nhập dữ liệu này với dữ liệu của cách mà branch phía dưới máy local.

Tuy nhiên git fetch không được cập nhập dữ liệu của working copy. Điều này sẽ có nghĩa là nếu như có bất cứ thay đổi commit nào trên remote server thì chúng sẽ không ảnh hưởng tới những tập tin, thư mục của bạn. Tuy nhiên, nếu bạn chạy checkout một nhánh nào đó và chạy câu lệnh: $git status.

Thì git sẽ hiểu thị cho bạn biết dữ liệu tại working copy có gì khác so với những dữ liệu remote server hay không.

Câu lệnh git pull

Đối với git pull thì khi chạy câu lệnh git pull $remote origin, $branch name, git sẽ chịu áp lực khi thực hiện việc fetch dữ liệu của git repository tại nhánh $branch name từ server nằm tại địa chỉ được quy định bởi $remote origin và được áp dụng khi các thay đổi này vào thư mục và tập tin ở working copy.

Câu lệnh git pull có thể gây xung đột conflict trong khi merge.

Như vậy thì câu lệnh git pull $remote origin $branch name sẽ tải về hay fetch dữ liệu từ một branch duy nhất $branch name từ các remote server và sau đó sẽ merge các thay đổi từ remote này vào repository dưới local.

Còn git fetch thì ngược lại, nó sẽ tải về fetch dữ liệu của toàn bộ các branch trên url được quy định bởi $remote origin nhưng mà không được thực hiện việc merge  hay các thay đổi này vào trong local.

Trên đây là toàn bộ những thông tin về fetch. Qua đây chắc các bạn đã hiểu được fetch là gì rồi đúng không? Hy vọng những thông tin trên về fetch sẽ giúp ích cho bạn trong công việc, học tập.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *