git tagging – gắn thẻ để đánh dấu commit

Tình huống

Dự án của bạn đã đi qua 3 phiên bản: V0.9, V1.0V2.0. Một ngày đẹp trời nọ, bạn nhận thấy rằng phiên bản V2.0 này thật sự kinh khủng và không thể tiếp tục được. Tuy nhiên, V1.0 lại rất ổn định với những tính năng hiện có. Bạn muốn quay về V1.0 để phát triển tiếp từ đó (giũ bỏ hoàn toàn công sức “kinh khủng” của V2.0).
Bạn nghĩ ngay đến việc reset về thời điểm V1.0 bằng câu lệnh:

Để tìm được hash của commit cho 1.0 thì bạn lại gõ tiếp lệnh:

Lúc này ác mộng thực sự xảy ra: có hàng trăm, thậm chí HÀNG NGÀN commit, và bạn sẽ phải ngụp lặn trong biển commit đó để tìm cho ra cái mình cần tìm.
Lúc này, ông bụt git tagging mới xuất hiện cứu cánh cho bạn.
Trước khi nói về git tagging, mình muốn nhắc qua về hash của commit.

Hash của commit

Khi bạn commit code của mình, git sẽ sinh cho commit đó một ID. ID này được sinh theo thuật toán SHA-1.
commit's ID sẽ có dạng hash: ce04aec53dfca5d79897212e9b8d8dcaa01c699b
Vậy nên người ta thường gọi là hash của commit (hay hash commit hay ID của commit đều tương đương).
hash này sẽ độc nhấtunique trong toàn dự án, vậy nên ta có thể xác định được commit thông qua hash của nó.
OK, quay lại git tagging hè!

git tagging

git tagging thực hiện việc đánh dấu cho commit. Hay nói cách khác thì nó là con trỏ trỏ tới hash của commit. Như vậy, thay vì phải lục tìm đống commit kia thì mình chỉ việc dùng tag, mà tag thì chỉ có vài cái (trong tình huống của mình thì chỉ có 3: V0.9, V1.0V2.0) nên sẽ dễ dàng hơn rất nhiều.

Tạo và xem một tag

Tạo tag với commit hiện tại

Tham số -a để đánh dấu rằng tag này chứa đầy đủ thông tin về người gắn tag, và bạn phải cung cấp thêm message qua tham số -m. tag này được gọi là annotated tag.

Xem thông tin tag

Liệt kê tất cả các tag

Xem thông tin về một tag cụ thể

Tạo tag với một commit cụ thể nào đó

Để liệt kê các commit cùng với hash của nó thì làm như sau:

Theo ví dụ trên, mình đã gắn tag cho 3 commit (0.9, 1.0 và 2.0), ta có thêm 2 commit release 2.1 và 3.0. Bây giờ, gắn tag cho commit “release 2.1”:

Có thể dùng full hash hoặc 1 phần của hash cũng được:

Lightweight tag

Nãy giờ mình làm việc với annotated tag là tag chứa nhiều thông tin trong đó. Lightweight tag thì ngược lại, chứa vài thông tin cơ bản thôi.
Để tạo lightweight tag, khi tạo tag, ta không dùng tham số nào cả:

Lưu ý rằng V3.1-lw chính là tên tag, nó có -lw ở sau để mình dễ phân biệt thôi.

Chia sẻ tag

Mặc định, lệnh git push không đẩy tag lên server repo, để đẩy tag lên thì ta phải chỉ rõ tag đó ra. Thao tác cũng tương tự như push branch vậy: git push origin [tag name]

Nếu muốn đẩy tất cả các tag lên một lần thì dùng tham số --tags:

Khi người khác clone hay pull code về thì sẽ có các tag luôn.

Lấy một tag về

Bạn không thể lấy một tag nào đó về. Để lấy được code của tag, đầu tiên ta pull code về (sẽ có tất cả các tag trong đó), sau đó tạo ra một branch mới từ tag mà bạn muốn lấy: git checkout -b [branchname] [tagname]

Vậy là có nhánh mới với code ở thời điểm V1.0. Giải quyết xong vấn đề ở đầu bài.

Xóa tag

Xóa tag dưới local

Xóa tag trên server

Lập trình và hơn thế nữa

Spread the love
  • 1
  •  
  •  
  •  
  •  
    1
    Share

Leave a Reply

2 Comments on "git tagging – gắn thẻ để đánh dấu commit"

avatar
  Subscribe  
newest oldest most voted
Notify of
trackback

[…] và mô hình pull request (Phần 2): pull request 7. git conflict và cách giải quyết 8. git tagging – gắn thẻ để đánh dấu commit 9. Git remote và việc push source code lên nhiều nơi cùng lúc 10. Sử dụng ssh với 2 […]

trackback

[…] Để biết thêm về git tag, bạn có thể đọc bài viết này […]