@@ -690,5 +690,90 @@ <h2>
690
690
</ div >
691
691
</ div >
692
692
693
+ < div class ="box ">
694
+ < h2 >
695
+ < span class ="docs ">
696
+ < a target ="new " href ="http://www.kernel.org/pub/software/scm/git/docs/git-tag.html "> docs</ a >
697
+ < a target ="new " href ="http://progit.org/book/ "> book</ a >
698
+ </ span >
699
+ < a name ="log "> git tag</ a >
700
+ < span class ="desc "> tag a point in history as important</ span >
701
+ </ h2 >
702
+
703
+ < div class ="block ">
704
+
705
+ < p >
706
+ If you get to a point that is important and you want to forever remember
707
+ that specific commit snapshot, you can tag it with < code > git tag</ code > .
708
+ The < code > tag</ code > command will basically put a permanent bookmark at
709
+ a specific commit so you can use it to compare to other commits in the
710
+ future. This is often done when you cut a release or ship something.
711
+ </ p >
712
+
713
+ < p > Let's say we want to release our Hello World project as version "1.0".
714
+ We can tag the last commit (< code > HEAD</ code > ) as "v1.0" by running
715
+ < code > git tag -a v1.0</ code > . The < code > -a</ code > means "make an annotated
716
+ tag", which allows you to add a tag message to it, which is what you almost
717
+ always want to do. Running this without the < code > -a</ code > works too, but
718
+ it doesn't record when it was tagged, who tagged it, or let you add a tag
719
+ message. I would recommend always creating annotated tags.</ p >
720
+
721
+ < pre >
722
+ < b > $ git tag -a v1.0 </ b >
723
+ </ pre >
724
+
725
+ < p > When you run the < code > git tag -a</ code > command, Git will open your editor
726
+ and have you write a tag message, just like you would write a commit
727
+ message.</ p >
728
+
729
+ < p > Now, notice when we run < code > git log --decorate</ code > , we can see our
730
+ tag there.</ p >
731
+
732
+ < pre >
733
+ < b > $ git log --oneline --decorate --graph</ b >
734
+ * 594f90b (HEAD, < span class ="hl "> tag: v1.0</ span > , master) reverted to old class name
735
+ * 8d585ea Merge branch 'fix_readme'
736
+ |\
737
+ | * 3ac015d (fix_readme) fixed readme title
738
+ * | 3cbb6aa fixed readme title differently
739
+ |/
740
+ * 558151a Merge branch 'change_class'
741
+ |\
742
+ | * 3467b0a changed the class name
743
+ * | b7ae93b added from ruby
744
+ |/
745
+ * 17f4acf first commit
746
+ </ pre >
747
+
748
+ < p > If we do more commits, the tag will stay right at that commit, so we have
749
+ that specific snapshot tagged forever and can always compare future
750
+ snapshots to it.</ p >
751
+
752
+ < p > We don't have to tag the commit that we're on, however. If we forgot to
753
+ tag a commit that we released, we can retroactively tag it by running the
754
+ same command, but with the commit SHA at the end. For example, say we had
755
+ released commit < code > 558151a</ code > (several commits back) but forgot to
756
+ tag it at the time. We can just tag it now:</ p >
757
+
758
+ < pre >
759
+ < b > $ git tag -a v0.9 558151a</ b >
760
+ < b > $ git log --oneline --decorate --graph</ b >
761
+ * 594f90b (HEAD, tag: v1.0, master) reverted to old class name
762
+ * 8d585ea Merge branch 'fix_readme'
763
+ |\
764
+ | * 3ac015d (fix_readme) fixed readme title
765
+ * | 3cbb6aa fixed readme title differently
766
+ |/
767
+ * 558151a (< span class ="hl "> tag: v0.9</ span > ) Merge branch 'change_class'
768
+ |\
769
+ | * 3467b0a changed the class name
770
+ * | b7ae93b added from ruby
771
+ |/
772
+ * 17f4acf first commit
773
+ </ pre >
774
+
775
+ </ div >
776
+ </ div >
777
+
693
778
< p > < a href ="/remotes "> On to Sharing and Updating Projects »</ a > </ p >
694
779
0 commit comments