Use tags to mark specific Git commits
Git allows you to attach tags to commits to mark certain points in the project history so that you can refer to them in the future. For example, you can tag a commit that corresponds to a release version, instead of creating a branch to capture a release snapshot.
In PyCharm, you can perform operations with tags in the Git Branches popup. To invoke it, in the main window header, click the Git widget with the name of the branch that is currently checked out:
You can also manage tags in the Branches pane of the Git tool window Alt09.
Open the Git tool window Alt09 and switch to the Log tab.
Locate the commit you want, right-click it and select New Tag from the context menu.
Enter the name of the new tag and click OK. The tag will be shown in the Log tab of the Git tool window Alt09:
Meta-data for annotated tags contains the name of the user who created them, so they allow you to check who placed them.
In the main menu, go to Git | New Tag.
In the Tag dialog that opens, under Git Root, select the path to the local repository in which you want to tag a commit, and specify the name of the new tag.
In the Commit field, specify the commit that you want to tag. You can enter the commit hash, or use an expression, for example:
<branch>~<number of commits backwards between the latest commit (HEAD) and the required commit>
. For more information, refer to Git commit naming conventions.Enter some comment in the Message field to create an annotated tag (if it's empty, a regular tag will be created).
Click Create Tag.
note
If the Compact References View option is enabled under Quick Settings in the Log toolbar, tag names are hidden behind branch names and are not visible.
tip
You can also right-click a commit in the Log tab of the Version Control tool window Alt09 and select New Tag from the context menu if you do not need to specify any additional options.
If you've placed a tag on a wrong commit, and want to reassign it (for example, to indicate a commit for a release version), do the following:
In the main menu, go to Git | New Tag.
In the Tag dialog, in the Tag Name field specify the name of an already existing tag that you want to reassign.
Select the Force option.
In the Commit field, specify the commit where to move the tag and click Create Tag.
Open the Git tool window Alt09 and switch to the Log tab.
Click the Go To Hash/Branch/Tag icon on the toolbar, or press Ctrl0F.
Enter the tag name (code completion suggests tag names as you type) and press Enter.
Suppose you marked a commit that corresponds to a release version with a tag, and now you want to review the snapshot of your project at that point in time. You can do this by checking out a tagged commit. Do one of the following:
Locate the tagged commit that you want to checkout, right-click it and select Checkout Revision from the context menu.
In the Git tool window Alt09, open the Tags node, select the necessary tag and choose Checkout from the list of actions in the context menu.
Invoke the branches popup, click Checkout Tag or Revision and type in the tag name (PyCharm provides a list of matching tags and revisions as you type).
Invoke the branches popup, open the Tags node, select the necessary tag and choose Checkout from the list of actions in the context menu.
Note that this operation results in a detached HEAD, which means you are no longer in any branch. You can use this snapshot for inspection and experiments. However, if you want to commit changes on top of this snapshot, you will need to create a branch.
By default, when you perform the push
operation, tags are not sent to the remote repositories.
To push a particular tag, either invoke the branches popup or the Git tool window Alt09, open the Tags node, select the necessary tag and choose Push to origin from the list of actions in the context menu.
To push several tags together with the commits:
In the Push Commits dialogue, select the Push tags checkbox in the bottom-left corner.
In the drop-down menu, select the tags you want to push:
Select All if you want to push all tags, including the tags that do not belong to the selected branches you are about to push (equivalent to
push --tags
).Select Current Branch if you want to push only the tags that belong to the selected branches you are about to push (equivalent to
push --follow-tags
).
Click Push.
Locate a tagged commit, right-click it and select Tag <tag_name> | Delete from the context menu.
In the Git tool window Alt09, open the Tags node, select the necessary tag and choose Delete from the list of actions in the context menu.
Invoke the branches popup, open the Tags node, select the necessary tag and choose Delete from the list of actions in the context menu.
Thanks for your feedback!