Nhiều người làm trong lĩnh vực này thắc mắc làm thế nào để phân biệt git fetch với git pull. Vậy tìm nạp git là gì? Lệnh này hoạt động như thế nào? Sự khác biệt giữa các lệnh git fetch và git pull là gì? Hãy cùng chúng tôi tìm câu trả lời cho những câu hỏi trên trong bài viết này nhé!

1. Lệnh git fetch là gì?

Lệnh git fetch là lệnh git được sử dụng để tải xuống nội dung từ kho lưu trữ từ xa mà không làm thay đổi trạng thái của kho lưu trữ cục bộ (dữ liệu cam kết, tệp, tham chiếu, v.v.). Nói một cách đơn giản, khi bạn thực hiện git fetch, git sẽ thu thập các thay đổi mới từ nhánh trong kho từ xa và lưu trữ chúng trên máy tính của bạn, nhưng nó sẽ không hợp nhất chúng vào kho cục bộ. Sử dụng git fetch, bạn có thể theo dõi các lần xác nhận mà người khác đã cập nhật cho máy chủ và nắm bắt thông tin khác nhau giữa từ xa và cục bộ.

2. Sự khác biệt giữa git pull và git fetch là gì?

Trong quá trình sử dụng git, nhiều kỹ sư thường nhầm lẫn và nhầm lẫn giữa 2 lệnh git fetch và git pull, vì 2 lệnh này dùng để tải nội dung từ xa. Tuy nhiên, git fetch được coi là phiên bản “an toàn hơn” của git pull. Khi được sử dụng, lệnh sẽ tải xuống nội dung từ xa mà không cập nhật trạng thái đang chạy của kho lưu trữ cục bộ. Từ đó, những gì bạn đang làm sẽ không bị ảnh hưởng. Nếu không, lệnh git pull sẽ tải xuống nội dung từ xa và ngay lập tức thực hiện hợp nhất git để hợp nhất các cam kết của nội dung từ xa mới. Điều này có thể vô tình đặt kho lưu trữ cục bộ của bạn vào trạng thái xung đột nếu bạn có các thay đổi đang chờ xử lý.

Ngoài ra, git fetch thường được sử dụng khi nhiều người đang làm việc trên cùng một nhánh. Chỉ nên sử dụng git pull khi chỉ có một người làm việc trên nhánh để tránh xung đột. Bạn chỉ nên sử dụng git pull trên một thư mục hoạt động sạch sẽ (không có thay đổi đã cam kết).

  • Đọc thêm: git pull là gì? Cách hoạt động của git pull
  • 3. Cách hoạt động của git fetch với các nhánh từ xa

    Để hiểu rõ hơn về cách hoạt động của git fetch, hãy xem cách git tổ chức và lưu trữ các cam kết. Trong thư mục ./.git/objects của kho lưu trữ, git lưu trữ tất cả các xác nhận cục bộ và từ xa. git tách các lần xác nhận nhánh từ xa khỏi các lần xác nhận nhánh cục bộ bằng cách sử dụng các tham chiếu nhánh. Các tham chiếu đến các nhánh cục bộ được lưu trữ trong ./.git/refs/heads/ . Khi thực hiện lệnh git branch, hệ thống sẽ xuất ra danh sách các tham chiếu nhánh cục bộ. Dưới đây là đầu ra git branch mẫu với một số bản trình diễn có tên branch .

    Kiểm tra nội dung của thư mục /.git/refs/heads/ sẽ cho kết quả tương tự.

    Các nhánh từ xa giống như các nhánh cục bộ, ngoại trừ việc chúng ánh xạ tới các xác nhận từ kho lưu trữ của người khác. Các nhánh từ xa có tiền tố là từ xa mà chúng thuộc về, vì vậy bạn không trộn lẫn chúng với các nhánh cục bộ. Giống như các nhánh cục bộ, git cũng có tham chiếu đến các nhánh từ xa. Tham chiếu nhánh từ xa nằm trong thư mục ./.git/refs/remotes/. Mã mẫu tiếp theo hiển thị nhánh mà bạn có thể thấy sau khi tìm nạp một kho lưu trữ từ xa có tên là remote-repo:

    Đầu ra

    này hiển thị nhánh cục bộ đã kiểm tra trước đó của chúng tôi với tiền tố origin/ . Ngoài ra, chúng tôi thấy các nhánh từ xa có tiền tố là remote-repo. Bạn có thể kiểm tra một nhánh từ xa giống như bạn làm với một nhánh cục bộ, nhưng điều này khiến bạn ở trạng thái tách rời (như kiểm tra các cam kết cũ). Bạn có thể coi chúng là các nhánh chỉ đọc. Ngoài ra, để xem các nhánh từ xa của bạn, chỉ cần chuyển cờ r tới nhánh git.

    Bạn có thể kiểm tra các nhánh từ xa bằng các lệnh git checkout và git log thông thường. Nếu bạn chấp nhận các thay đổi đối với nhánh từ xa, bạn có thể hợp nhất chúng vào nhánh cục bộ của mình bằng cách thực hiện hợp nhất git bình thường. Vì vậy, không giống như svn, việc đồng bộ hóa kho lưu trữ cục bộ với kho lưu trữ từ xa thực sự là một quy trình gồm hai bước: tìm nạp, sau đó hợp nhất. git pull là một phím tắt tiện dụng cho quá trình này.

    4. các lệnh và tùy chọn tìm nạp git

    Lấy tất cả các nhánh từ kho lưu trữ. Điều này cũng tải xuống tất cả các cam kết và tệp cần thiết từ một kho lưu trữ khác.

    Lệnh tương tự như trên, nhưng chỉ tìm nạp nhánh được chỉ định.

    Nhận tất cả các điều khiển từ xa đã đăng ký và các chi nhánh của chúng:

    Tùy chọn -dry-run sẽ thực hiện chạy thử lệnh. Nó sẽ đưa ra các ví dụ về các hành động mà nó sẽ thực hiện trong quá trình tìm nạp, nhưng không áp dụng chúng.

    5. Đồng bộ hóa nguồn gốc với git fetch

    Ví dụ sau đây cho thấy quá trình đồng bộ hóa một kho lưu trữ cục bộ với nhánh chính của kho lưu trữ trung tâm.

    Điều này sẽ hiển thị nhánh đã tải xuống:

    Các xác nhận từ các nhánh từ xa mới này được hiển thị dưới dạng hình vuông thay vì hình tròn trong hình bên dưới. Như bạn có thể thấy, git fetch cho phép bạn truy cập vào toàn bộ cấu trúc nhánh của kho lưu trữ khác.

    Để xem những xác nhận nào đã được thêm vào chính ngược dòng, bạn có thể chạy git log với nguồn gốc/chính làm bộ lọc:

    Để phê duyệt các thay đổi và hợp nhất chúng vào nhánh chính cục bộ của bạn, hãy sử dụng lệnh sau:

    Sau đó, chúng tôi sẽ sử dụng git merge origin/main:

    origin/main và các nhánh chính hiện trỏ đến cùng một cam kết và đồng bộ với quá trình phát triển ngược dòng.

    Trên đây là tổng quan về lệnh git fetch trong git. Tôi hy vọng bài viết này đã giúp bạn hiểu git fetch là gì và git fetch hoạt động như thế nào. Nếu bạn muốn trở thành một lập trình viên, hãy xem git fetch ngay bây giờ!

Kiểm tra tiếng Anh trực tuyến

Bạn đã biết trình độ tiếng Anh hiện tại của mình chưa?
Bắt đầu làm bài kiểm tra

Nhận tư vấn lộ trình từ ACET

Hãy để lại thông tin, tư vấn viên của ACET sẽ liên lạc với bạn trong thời gian sớm nhất.