Bài 6: Đánh dấu commit với Tag

Sau mỗi lần bạn commit file lên Git thì mọi thứ sẽ được lưu vào file log, mình đã hướng dẫn bạn xem file log trước đây. Tuy nhiên nếu bạn commit quá nhiều thì sẽ gặp phải khó khăn trong việc xem file log, ở đây chúng ta có thể gắn thẻ tag, sau này mỗi khi cần xem lại bạn sử dụng lệnh git show tên_tag thông tin sẽ hiển thị đầy đủ. Ngoài ra, còn giúp bạn dễ dàng diff(đối chiếu) sau nay khi cần nhớ checksum, cũng như có thể tạo thêm branch từ tag để bạn thuận tiện hơn trong việc phân nhánh.

Trong Git có hai kiểu tag chính đó là:

Lightweight Tag: Các tag này chỉ đơn thuần là đánh dấu snapshot của commit.
Annotated Tag: Với tag này, bạn có thể đặt tiêu đề cho tag, và khi xem nó sẽ có thông tin về người tag, ngày tag,….
Cách tạo Lightweight Tag

Trước tiên, bạn có thể gõ git tag để xem danh sách các tag có trong dự án của bạn. Sau đó để tạo thêm một tag, bạn có thể gõ git tag tên_tag để tạo. Ví dụ như v1.0 chẳng hạn.

$ git tag v1.0
$ git tag
v1.0

Bây giờ bạn có thể xem thông tin của lần commit được gắn tag này bằng lệnh git show tên_tag. Lưu ý rằng lệnh trên nó sẽ đánh dấu lần commit cuối cùng của bạn vào tag v1.0.

$ git show v1.0
commit 05193375f7a7c1295fd26c6388d81e188f405b0b
Author: Nhat Design <contact@nhatdesign.com>
Date: Thu Apr 23 02:20:50 2015 -0700

 Added a new tag

diff --git a/tag.html b/tag.html
new file mode 100644
index 0000000..e69de29

Cách tạo Annotated Tag

Để tạo Annotated Tag thì bạn cũng sử dụng lệnh git tag nhưng sẽ có thêm tham số -a và tham số -m để thiết lập lời nhắn cho tag này.

$ git tag -a v1.0-an -m "Ra mat phien ban 1.0"
$ git show v1.0-an
tag v1.0-an
Tagger: NhatDesign <contact@nhatdesign.com>
Date: Thu Apr 23 02:41:11 2015 -0700

Ra mat phien ban 1.0

commit d5a599e3385a8fc7a65958ed50bc8b54666b45ad
Author: Nhat Design <contact@nhatdesign.com>
Date: Thu Apr 23 02:40:31 2015 -0700

 Commit for Annotated Tag

diff --git a/tag.html b/tag.html
index e69de29..fea03c1 100644
--- a/tag.html
+++ b/tag.html
@@ -0,0 +1 @@
+Annotated Tag

Bạn có thể thấy khi show ra, cái Annotated tag sẽ có nhiều thông tin hơn là so với cái tag thông thường, và đây cũng là kiểu tag bạn nên sử dụng để có nhiều thông tin hơn.

Thêm tag cho các commit cũ

Ở lệnh trên thì bạn chỉ tạo ra tag cho commit cuối cùng của bạn. Còn nếu bạn có rất nhiều commit trước đó mà cần gắn tag thì chỉ cần thêm mã checksum (hoặc một đoạn mã checksum) của lần commit đó.

Để xem mã checksum của các lần commit trước đó thì bạn có thể sử dụng git log với tham số –pretty với giá trị oneline để lọc log nhé.

$ git log --pretty=oneline
d5a599e3385a8fc7a65958ed50bc8b54666b45ad Commit for Annotated Tag
05193375f7a7c1295fd26c6388d81e188f405b0b Added a new tag
435f642f951fbab1037fc2feef239ab26d6e6115 Added faq.html
6904d5232bf90821068279311e205e3e1ff929f1 Initial commit

Và bây giờ mình có thể đặt tag cho commit Initial commit thì sẽ khai báo một đoạn mã checksum của nó vào lệnh git tag như sau.

$ git tag -a v0.0 6904d -m "Tag for inintial commit"
$ git tag
v0.0
v1.0
v1.0-an
<h4>Push Tag</h4>

Mặc định lệnh git push sẽ không push các tag đã tạo lên repository mà bạn có thể dùng lệnh git push –tags để đẩy toàn bộ tag lên repository.

$ git push --tags
Username for 'https://github.com': nhatdesign
Password for 'https://nhatdesign@github.com': 
Counting objects: 7, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (6/6), done.
Writing objects: 100% (7/7), 775 bytes | 0 bytes/s, done.
Total 7 (delta 1), reused 0 (delta 0)
To https://github.com/nhatdesign/hoc-git.git
 * [new tag] v0.0 -> v0.0
 * [new tag] v1.0 -> v1.0
 * [new tag] v1.0-an -> v1.0-an

Nếu bạn dùng Github hay các dịch vụ tương tự thì bây giờ bạn sẽ thấy tag xuất hiện ở repository.

git-tag-github

Nhập tag vào branch

Mặc dù ở bài sau mình sẽ giải thích qua branch nhưng tạm thời bây giờ bạn có thể hiểu branch là một phân nhánh trong một cây dự án để bạn sửa mã nguồn mà không ảnh hưởng đến phân nhánh gốc (master).

Bây giờ bạn có thể truy cập vào dữ liệu mà bạn đã commit thông qua tag kèm theo việc tạo một branch mới với lệnh git checkout -b tên_branch tên_tag. Ví dụ mình muốn đưa cái tag v1.0-an vào một branch mới tên version1 thì sẽ viết như sau:

$ git checkout -b version1 v1.0-an
Switched to a new branch 'version1'

Lúc này bạn đã tự động chuyển qua branch version1 thay vì master ban đầu, kèm theo đó là dữ liệu của lần commit được gắn tag v1.0-an.

Bây giờ nếu bạn muốn làm việc thêm với branch này thì cứ làm việc như khi bạn ở master. Để chuyển về lại master, bạn gõ lệnh git checkout master.

Để push cái branch này lên bạn có thể sử dụng lệnh git push origin version1. Nếu bạn quên thì mình nhắc lại nhé, origin chính là tên địa chỉ remote của repository mặc định mà Git tự đặt khi bạn clone.

git-push-branch

Bây giờ bạn thử vào xem cái version1 và cái master xem có thấy sự khác nhau của nó không? Ở bài nói về branch mình sẽ giải thích cho bạn kỹ hơn. Đại loại là bạn tạo một phân nhánh khác để sửa code riêng mà không ảnh hưởng đến code chính.

Nguồn : thachpham.com

Xem tiếp bài trong series<< Bài 5 : Git Log và Undo Commit

Leave a Reply

Your email address will not be published. Required fields are marked *

×