Lệnh git pull truy xuất và tải nội dung kho về máy cục bộ. Kho cục bộ được cập nhật để hiển thị nội dung từ kho từ xa.
Bạn có thể gặp tình huống muốn tải mã liên kết với kho Git về máy cục bộ.
Giả sử bạn làm ứng dụng theo dõi đơn hàng tại tạp hóa địa phương. Khi làm thay đổi cho app, bạn muốn kéo mã từ kho từ xa. Điều này đảm bảo bạn luôn làm việc với mã mới nhất.
Đó là nơi lệnh git pull xuất hiện. Lệnh git pull dùng để truy xuất nội dung từ kho từ xa sau đó lưu vào máy cục bộ. Trong hướng dẫn này, chúng ta sẽ thảo luận, với ví dụ, cơ bản về kéo mã dùng lệnh git pull.
Lệnh Git Pull là gì?
Thuật ngữ "kéo mã" (pulling code) mô tả quá trình tải nội dung từ kho từ xa và lưu vào máy tính.
Để kéo mã trong Git, bạn có thể dùng lệnh git pull. Lệnh git pull là lệnh hữu ích thực thi hai lệnh khác: git fetch và git merge.
Hãy phân tích cách lệnh git pull hoạt động.
Đầu tiên, khi chạy git pull, kho từ xa bạn kéo sẽ được tải xuống. Bản sao mã từ kho và commit Git liên quan đến repo sẽ được lưu vào máy.
Sau đó, thao tác Git merge được thực thi. Thao tác này hợp nhất mã trên máy cục bộ với mã mới truy xuất, tạo phiên bản cuối cùng của codebase. Phiên bản này sẽ bằng với phiên bản bạn truy xuất từ nhánh từ xa.
Lệnh Git Pull
Lệnh git pull truy xuất kho từ xa và tải mã về phiên bản cục bộ của kho. Hãy xem lệnh:
git pull <remote>
Tham số "remote" tham chiếu đến kho từ xa bạn muốn kéo về máy cục bộ. Khi chạy lệnh, kho từ xa sẽ được truy xuất rồi hợp nhất vào bản sao cục bộ của kho.
Lệnh git pull không ảnh hưởng file untracked (không theo dõi). Bạn chỉ nhận thay đổi làm cho file trên nhánh từ xa được theo dõi bởi Git. Các thay đổi sẽ lưu vào working tree cục bộ.
git pull origin
Giả sử muốn truy xuất nội dung kho "origin". Đây là giá trị "remote" mặc định dùng với kho. Chúng ta có thể làm bằng cách kéo nhánh origin master:
git pull origin/master
Lệnh này trả về:
From https://github.com/jamesgallagher432/demo-repository b53b22d..a7d8dc2 master -> origin/master Updating b53b22d..a7d8dc2 Fast-forward README.md | 2 ++ 1 file changed, 2 insertions(+)
Đầu tiên, lệnh truy xuất kho từ xa chúng ta làm việc. Sau đó, thay đổi được xác định hợp nhất vào bản sao cục bộ mã.
File README.md trong kho khác với file trên máy cục bộ. Khi chạy git pull, thay đổi được xác định và hợp nhất vào máy cục bộ.
Bây giờ đã chạy git pull, máy cục bộ lưu mã giống kho từ xa. Điều này có nghĩa, khi làm thay đổi mã, chúng ta biết chúng sẽ tương thích với phiên bản mới nhất kho. Khi commit mới đẩy lên kho từ xa, ta dùng git pull lại lấy phiên bản cập nhật.
Chúng ta có thể kiểm tra file đã cập nhật bằng git log. Lệnh này cho thấy tất cả commit làm cho kho.
Git Pull Remote Branch từ Kho
Giả sử bạn muốn kéo mã từ một nhánh cụ thể và lưu về máy cục bộ. Bạn sẽ làm việc với mã trên nhánh gọi là "dev-v0.9". Bạn chỉ muốn kéo mã cho nhánh đó.
Bạn có thể làm bằng cách thực thi git checkout, theo sau git pull. Cú pháp cho thao tác này:
git checkout <tên-nhánh> git pull <remote>
Cho ví dụ, chúng ta chạy lệnh:
git checkout dev-v0.9 git pull origin
Khi chạy git checkout, chúng ta chuyển sang nhánh "dev-v0.9". Lệnh git pull origin tạo bản sao mã trên nhánh "dev-v0.9" được truy xuất và lưu. Khi mã tải xong, thao tác git merge sẽ thực thi. Điều này cập nhật kho cục bộ để hiển thị mã giống kho từ xa.
Git Force Pull (Kéo Buộc)
Bạn có thể buộc thao tác pull. Buộc git pull thường dùng khi gặp lỗi untracked file muốn loại bỏ.
Trước khi buộc pull, hãy chắc chắn bạn sẵn sàng mất thay đổi cục bộ. Buộc pull sẽ ghi đè tất cả thay đổi cục bộ.
Để buộc pull, trước tiên fetch siêu dữ liệu cho commit bạn muốn lưu vào máy cục bộ:
git fetch --all
Tiếp theo, backup nhánh hiện tại. Backup nhánh hiện tại đảm bảo bạn không mất thay đổi có thể muốn quay lại sau:
git branch -b backup
Bây giờ đã có backup nhánh, chúng ta có thể kéo thay đổi. Chúng ta làm bằng lệnh reset:
git reset --hard origin/master
Bạn nên thay origin/master bằng tên origin và nhánh liên quan đến dự án bạn làm việc. Origin đại diện cho kho gốc. Master là tên nhánh lấy mã.
Đọc thêm cách buộc Git pull trong hướng dẫn git force pull.
Git Pull vs. Git Fetch
Cả git fetch và git pull truy xuất nội dung kho từ xa. Một số nhà phát triển nhầm lẫn giữa git pull và git fetch.
Lệnh git fetch chỉ truy xuất siêu dữ liệu từ kho từ xa. Siêu dữ liệu này dùng kiểm tra có thay đổi có sẵn kéo về máy cục bộ không. Lệnh git pull tải cả siêu dữ liệu và file đã thay đổi.
Lệnh git pull trước thực thi fetch. Nếu thay đổi được xác định giữa kho cục bộ và từ xa, những thay đổi sẽ được tải.
Khi dùng git pull, hãy chắc chắn bạn sẵn sàng chấp nhận thay đổi. Ngược lại, kho có thể gặp xung đột mã khi commit công việc.
Tóm lại, dùng git fetch kiểm tra thay đổi giữa kho cục bộ và từ xa. Dùng git pull nếu muốn truy xuất siêu dữ liệu kho từ xa và tải thay đổi đã làm.
Kết luận
Lệnh git pull truy xuất và tải mã lưu trong kho Git từ xa. Lệnh git pull tương tự git fetch. git fetch chỉ truy xuất siêu dữ liệu. git pull truy xuất siêu dữ liệu và thay đổi làm cho file trong kho.
Hướng dẫn này khám phá cơ bản kéo mã và cách dùng lệnh git pull. Bây giờ bạn được trang bị kiến thức cần thiết để bắt đầu dùng lệnh git pull như nhà phát triển chuyên nghiệp!