Git Fetch: Một lớp học chính

Tác giả sysadmin, T.Hai 23, 2023, 09:41:11 SÁNG

« Chủ đề trước - Chủ đề tiếp »

0 Thành viên và 2 Khách đang xem chủ đề.

Git Fetch: Một lớp học chính


Lệnh git fetch giống như lệnh git pull cập nhật kho lưu trữ cục bộ của bạn với thông tin và cam kết từ kho lưu trữ từ xa mà không ghi đè lên các tệp đang làm việc của bạn.


Lệnh Git fetchcho phép bạn nhìn trước khi nhảy. Bạn có thể khám phá những thay đổi nào đã được thực hiện đối với kho lưu trữ từ xa nhưng không ghi đè các tệp cục bộ của bạn bằng các tệp từ xa.

1. Git fetch là gì và nó làm gì?

Lệnh fetchtrong Git tải xuống các cam kết, tệp và thông tin khác từ kho lưu trữ từ xa về kho lưu trữ cục bộ của bạn một cách an toàn. Sử dụng tìm nạp khi bạn muốn xem những thay đổi mà các nhà phát triển khác đã thực hiện mà không bị buộc phải chấp nhận những thay đổi đó. Các tệp cục bộ của bạn vẫn còn nguyên. Tại sao điều đó lại quan trọng?

Bạn phải giữ trí thông minh của mình khi bạn làm việc như một phần của nhóm phát triển. Kho lưu trữ từ xa hoặc trung tâm sẽ chứa các thay đổi và các nhánh mới mà các nhà phát triển khác đã tạo và đẩy vào kho lưu trữ từ xa.

Hoàn toàn có khả năng ai đó đã cập nhật bản sao từ xa của các tệp mà bạn đã sửa đổi cục bộ trên máy tính của mình. Nếu bạn tình cờ thực hiện một thao tác git pullđể cập nhật kho lưu trữ cục bộ của mình, bạn có thể thấy mình đang xử lý việc hợp nhất cho những thay đổi mà bạn thậm chí có thể không muốn.

Khi bạn đã tải xuống thông tin, bạn có thể kiểm tra thông tin đó và xem những thay đổi là gì. Điều này cho phép bạn đưa ra lựa chọn sáng suốt về những gì bạn muốn hợp nhất ngay bây giờ, nếu có, và những gì bạn muốn trì hoãn sau này.

2. Tìm nạp Git so với kéo

Lệnh  git fetch hoạt động giống như lệnh git pull nhưng không có bước ghi đè lên các tệp cục bộ của bạn. Kho lưu trữ cục bộ của bạn được cập nhật và đồng bộ hóa, nhưng các thay đổi không được ghi vào trạng thái làm việc của kho lưu trữ cục bộ, vì vậy các tệp của bạn vẫn còn nguyên vẹn.

Hoặc, nói cách khác, lệnh git pull giống như một lệnh được git fetch theo sau bởi một tệp git merge.

3. Đồng bộ hóa Kho lưu trữ cục bộ và từ xa của bạn với git fetch

Để tìm nạp tất cả siêu dữ liệu đã cập nhật và các cam kết từ kho lưu trữ từ xa đến kho lưu trữ cục bộ của bạn, hãy sử dụng lệnh git fetch có tên hoặc URL của kho lưu trữ từ xa. Theo mặc định, kho lưu trữ từ xa đầu tiên được gọi là "origin".

Mã nguồn [Chọn]
git fetch origin
Bạn có thể bỏ qua từ "origin" nếu bạn đang làm việc với một kho lưu trữ từ xa duy nhất.

Mã nguồn [Chọn]
git fetch

Điều đó truy xuất bất kỳ bản cập nhật nào từ kho lưu trữ "gốc", nhưng nó không hợp nhất các thay đổi vào các tệp đang hoạt động. Chúng ta có thể thấy có một nhánh mới, được gọi là "new-branch", đã được truy xuất cho chúng ta.

Khi bạn đã sử dụng fetchlệnh, bạn có thể xem danh sách đầy đủ các nhánh trên điều khiển từ xa, bằng cách sử dụng -rtùy chọn (từ xa) với lệnh rẽ nhánh.

Mã nguồn [Chọn]
git branch -r

Điều này liệt kê tất cả các nhánh mà điều khiển từ xa biết, mà sau fetch, cũng nằm trong kho lưu trữ cục bộ của bạn.

4. Xem tất cả các thẻ đã tìm nạp

Tương tự, bạn có thể sử dụng tagtùy chọn (lưu ý, đó là "thẻ" không có "s") để xem danh sách các thẻ.

Mã nguồn [Chọn]
git tag

5. Chạy khô trước

Mặc dù a git fetch không hợp nhất các thay đổi vào các tệp làm việc của bạn nhưng nó vẫn cập nhật kho lưu trữ cục bộ của bạn. Nếu bạn muốn xem fetchlệnh sẽ thực hiện thay đổi gì mà không thực sự tạo ra chúng, hãy sử dụng tùy chọn --dry-run.

Mã nguồn [Chọn]
git fetch --dry-run

6. Cách lấy một nhánh

Tìm nạp thông tin về một chi nhánh rất dễ dàng. Thêm tên của nhánh vào dòng lệnh để cho biết fetchbạn chỉ cần biết về nhánh đó.

Ở đây, chúng ta đang yêu cầu fetchtruy xuất nhánh "mary-feature" từ "origin" của kho lưu trữ từ xa.

Mã nguồn [Chọn]
git fetch origin mary-feature

Bây giờ các chi tiết và nội dung của nhánh từ xa đã có trong kho lưu trữ cục bộ của bạn, bạn có thể sử dụng lệnh git checkoutđể tạo một nhánh mới và kiểm tra nhánh từ xa. Điều này sẽ không ghi đè lên bất kỳ tệp hiện có nào nếu đây là lần đầu tiên bạn sử dụng nhánh này.

Mã nguồn [Chọn]
git checkout -b mary-feature origin/mary-feature

7. Tìm nạp tất cả các nhánh

Nếu bạn đang sử dụng nhiều điều khiển từ xa, bạn có thể tiết kiệm thời gian bằng cách kéo tất cả các thay đổi từ tất cả các nhánh về kho lưu trữ cục bộ của mình bằng cách sử dụng tùy --allchọn.

Mã nguồn [Chọn]
git fetch --all
8. So sánh các chi nhánh địa phương và từ xa

Để xem các tệp trong một nhánh từ xa khác với các bản sao cục bộ của bạn như thế nào, hãy sử dụng git fetch, sau đó sử dụng git loglệnh.

Lưu ý rằng các nhánh cục bộ và từ xa có hai dấu chấm ".." ngăn cách chúng. Tùy --oneline chọn hiển thị số nhận dạng cam kết và thông báo cam kết.

Mã nguồn [Chọn]
git fetch
Mã nguồn [Chọn]
git log --oneline mary-feature..origin/mary-feature

Hiển thị một dòng rất hữu ích nếu một nhánh có nhiều thay đổi. Để xem thêm một chút thông tin, bỏ qua --onelinetùy chọn.

Mã nguồn [Chọn]
git log mary-feature..origin/mary-feature

Điều này cho chúng tôi thấy ngày và giờ của mỗi lần xác nhận, cùng với thông báo cam kết và chi tiết liên hệ của tác giả thay đổi.

9. Đồng bộ hóa chi nhánh cục bộ với chi nhánh từ xa

Nếu bạn đã quyết định muốn tiếp tục và hợp nhất các thay đổi từ nhánh từ xa sang các tệp làm việc cục bộ của mình, bạn có thể sử dụng các lệnh này.

Chúng tôi sẽ kiểm tra chi nhánh để đảm bảo rằng chúng tôi đang làm việc, đó là chi nhánh đang hoạt động hiện tại của chúng tôi..

Mã nguồn [Chọn]
git checkout mary-feature

Chi nhánh đã được kiểm tra cho chúng tôi và chúng tôi được thông báo rằng nó đứng sau phiên bản từ xa. Chúng tôi có thể sử dụng git pullđể cập nhật nó, sau đó git statusđể kiểm tra trạng thái của chúng tôi.

Mã nguồn [Chọn]
git pull
Mã nguồn [Chọn]
git status

Nếu chúng tôi đã thực hiện một số thay đổi đối với các tệp cục bộ của mình, Git sẽ thông báo cho chúng tôi khi chúng tôi kiểm tra nhánh mà chúng tôi sẽ cần thực hiện để bắt đầu git pullhợp nhất.

Mã nguồn [Chọn]
git checkout mary-feature

Một cách đơn giản git pull bắt đầu quá trình truy xuất các tệp và hợp nhất hoặc chúng ta có thể đi sâu vào và sử dụng git mergechính nó. Chúng tôi sẽ bắt đầu bằng cách đảm bảo rằng chúng tôi đang làm việc với đúng nhánh.

Mã nguồn [Chọn]
git checkout mary-feature

Chúng tôi sẽ yêu cầu git hợp nhất nhánh hiện tại của chúng tôi với nhánh trong kho lưu trữ từ xa, có sáu cam kết khác nhau cần được giải quyết.


Chúng tôi cần cho Git biết nhánh từ xa nào chúng tôi muốn hợp nhất.

Mã nguồn [Chọn]
git merge origin/mary-feature

Trình chỉnh sửa mở ra để cho phép chúng tôi cung cấp thông báo cam kết. Chúng tôi có thể chấp nhận thông báo được đề xuất hoặc thêm thông báo của riêng mình. Trình chỉnh sửa là trình chỉnh sửa mặc định của bạn trừ khi Git đã được cấu hình để sử dụng một trình chỉnh sửa khác.


Lưu các thay đổi của bạn khi bạn đã sẵn sàng để tiếp tục. Quá trình hợp nhất sẽ tự động diễn ra khi đóng trình chỉnh sửa.

Hợp nhất của chúng tôi đã thành công vì không có xung đột.


Xung đột phát sinh khi cùng một dòng mã được thay đổi bởi hai hoặc nhiều nhà phát triển. Nếu đúng như vậy,  Git sẽ đánh dấu các xung đột trong tệp bị ảnh hưởng. Bạn sẽ cần xem lại chúng lần lượt và chọn thay đổi nào sẽ được giữ lại.

10. Chú chó con được huấn luyện một nửa

Giống như một con chó con đang huấn luyện, fetch nó sẽ lấy những gì bạn yêu cầu, nhưng nó sẽ không bỏ rơi nó. Nếu bạn thực sự muốn những gì con chó con đã cho bạn thấy, bạn cần phải pull.