Hướng dẫn Checkout Git Tags: Mọi thứ bạn cần biết

Khi làm việc với Git, các nhà phát triển thường tạo các tag như là những điểm tham chiếu trong quá trình phát triển phần mềm của họ, đặc biệt là cho các phiên bản phát hành.

Các tag của Git là các đối tượng Git có thể được checkout tương tự như một nhánh hoặc một commit.

Trong hướng dẫn này, chúng ta sẽ cùng nhau tìm hiểu cách checkout Git tags thông qua các ví dụ được trình bày rõ ràng và dễ hiểu nhất.

Làm thế nào để checkout một tag cụ thể?

Bước 1 - Lấy danh sách các tag mới nhất từ kho lưu trữ từ xa

Điều đầu tiên bạn cần đảm bảo là đã lấy được danh sách các tag mới nhất từ kho lưu trữ từ xa (remote repository).

Để lấy các tag từ kho lưu trữ từ xa của bạn, thực thi lệnh git fetch cùng với cả hai tùy chọn --all--tags.

Điều này sẽ đảm bảo rằng kho lưu trữ cục bộ (local repository) của bạn được cập nhật với các tag mới nhất từ kho lưu trữ từ xa, cho phép bạn truy cập vào các phiên bản mã nguồn cụ thể và xác định các bản phát hành mới nhất từ dự án của bạn.

$ git fetch --all --tags

Lệnh này sẽ trả về đầu ra như dưới đây:

# Output
From <remote url>
 * [new tag]    v1.0.0    -> v1.0.0

Lưu ý: Nếu bạn chạy lệnh trên và không thấy bất kỳ thông báo nào được trả về, điều đó có nghĩa là dữ liệu trong kho lưu trữ cục bộ của bạn đã được cập nhật.

Bước 2 - Liệt kê danh sách tất cả các thẻ

Để xem danh sách đầy đủ các thẻ trong kho lưu trữ từ xa, chúng ta sử dụng lệnh git tag.

$ git tag

Kết quả đầu ra của lệnh này sẽ là:

# Output
v1.0.0
v1.0.1

Bước 3 - Liệt kê danh sách tất cả các nhánh

Tương tự, chúng ta có thể xem danh sách các nhánh hiện có trên kho lưu trữ từ xa bằng cách thực thi lệnh sau đây.

$ git branch -r

Bạn sẽ thấy kết quả đầu ra như sau:

# Output
origin/HEAD -> origin/main
origin/dev
origin/main

Lưu ý: Sử dụng tùy chọn -r để hiển thị các nhánh theo dõi từ xa trong danh sách.

Bước 4 - Thực hiện việc checkout một tag cụ thể sang một nhánh mới

Bước này thực hiện việc checkout của một thẻ cụ thể sang một nhánh mới không có trong danh sách các nhánh hiện tại được lấy ở Bước 2.

Bạn có thể sử dụng lệnh git checkout để checkout một thẻ Git bằng cách chỉ định tên thẻ cùng với tên nhánh.

$ git checkout <tag_name> -b <branch>

Ví dụ, nếu bạn muốn checkout thẻ v1.0.0 sang một nhánh mới có tên là v1.0.0-branch, hãy chạy lệnh sau.

$ git checkout v1.0.0 -b v1.0.0-branch

Đây là kết quả đầu ra sau khi chạy lệnh trên:

# Output
Switched to a new branch 'v1.0.0-branch'

Lưu ý: Nếu bạn cố gắng checkout một tag trên một nhánh hiện tại, bạn sẽ nhận được một thông báo tương tự như sau fatal: a branch named 'main' already exists.

Bằng cách chạy lệnh trên, bạn đã thành công trong việc checkout tag v1.0.0.

Khi bạn chạy lệnh git checkout <tag_name> mà không sử dụng tùy chọn -b, Git sẽ chuyển kho lưu trữ cục bộ của bạn sang trạng thái gọi là “Detached HEAD”.

Trong trạng thái này, bạn đang làm việc trực tiếp với một commit cụ thể thay vì một nhánh. Điều này có thể gây nhầm lẫn và gây khó khăn trong việc quản lý mã nguồn của bạn, vì vậy bạn nên sử dụng tùy chọn -b để tạo một nhánh mới từ tag.

Để kiểm tra trạng thái của nhánh của bạn, sử dụng lệnh git log và đảm bảo rằng con trỏ HEAD, đại diện cho commit mới nhất, đang trỏ đến tag quan tâm của bạn.

$ git log --oneline --graph

Kết quả đầu ra của lệnh này sẽ là:

# Output
* 5848c3c (HEAD -> v1.0.0-branch, tag: v1.0.0, main, dev) first commit

Bây giờ bạn có thể bắt đầu làm việc trên nhánh của mình, sử dụng tag mà bạn đã chỉ định trước đó làm điểm khởi đầu.

Làm thế nào để checkout tag mới nhất?

Nếu bạn cần checkout tag mới nhất, hãy tham khảo phần sau đây.

Bước 1 - Cập nhật kho lưu trữ cục bộ của bạn

Để checkout tag Git mới nhất, bạn cần cập nhật kho lưu trữ của mình bằng cách tìm bất kỳ tag từ xa nào hiện có. Vui lòng chạy lệnh sau.

$ git fetch --tags

# Output
From <remote url>
 * [new tag]    v1.0.0    -> v1.0.0
 * [new tag]    v1.0.2    -> v1.0.2

Bước 2 - Lấy tên tag mới nhất hiện có

Chúng ta sẽ gán một biến có tên là latest-tag với giá trị được trả về bởi lệnh git describe, đó là tên của tag mới nhất trên kho lưu trữ từ xa của bạn.

Hãy chạy lệnh sau:

$ latest_tag=$(git describe --tags `git rev-list --tags --max-count=1`)

Sau đó, chạy lệnh sau để xem giá trị của biến $latest_tag:

$ echo $latest_tag

# Output
v1.0.2

Bước 3 - Checkout tag mới nhất trong kho lưu trữ của bạn

$ git checkout $latest_tag -b latest

# Output
Switched to a new branch 'latest'

Đó là tất cả, bạn đã checkout thành công tag mới nhất.

Chạy lệnh sau để đảm bảo rằng bạn đang làm việc trên tag mới nhất của mình.

$ git log --oneline --graph

Kết luận

Trong hướng dẫn này, bạn đã học cách để có thể dễ dàng checkout các tag trên Git bằng cách sử dụng lệnh git checkout.

Ngoài ra, bạn đã có thêm kiến thức về cách checkout các tag Git mới nhất từ kho lưu trữ của mình, đặc biệt là khi xử lý nhiều tag.

Bằng cách làm theo các bước được đề cập trong hướng dẫn này, bạn hiện có thể quản lý kho lưu trữ Git của mình một cách hiệu quả và làm việc với các tag một cách hiệu quả hơn.