12

In a python script, I try to create and push a tag to origin on a git repository. I use gitpython-1.0.2.

I am able to checkout an existing tag but have not found how to push a new tag to remote.

Many thanks

5 Answers 5

19
new_tag = repo.create_tag(tag, message='Automatic tag "{0}"'.format(tag)) 

repo.remotes.origin.push(new_tag)
Sign up to request clarification or add additional context in comments.

3 Comments

useful links: git.Repo.create_tag and tutorial
this doesn't push the tag for me. I see it locally, but not remotely
It's better to use new_tag.name here.
8

To create a new tag using gitpython:

from git import Repo
obj = Repo("directory_name")
obj.create_tag("tag_name")

To push to remote

obj.remote.origin.push("tagname")

1 Comment

this doesn't push the tag for me. I see it locally, but not remotely
2
tag = repo.create_tag(tagName, message=mesg)
repo.remote.origin.push(tag.path)

tag.name may be conflict with your local branch name, use tag.path here.

Comments

1

Git supports two types of tags: lightweight and annotated. So in GitPython we also can created both types:

# create repository
repo = Repo(path)
# annotated
ref_an = repo.create_tag(tag_name, message=message)
# lightweight 
ref_lw = repo.create_tag(tag_name)

To push a lightweight tag you need specify the reference to tag repo.remote('origin').push(ref_lw), but for an annotated tag you can just use:

repo.remote('origin').push()

if configuration push.followTags = true. To set configuration programmatically

repo.config_writer().set_value('push', 'followTags', 'true').release()

Additional information about pushing commits & tags simultaneously

Comments

0

I used the below snippet code to create a tag and push it to remote. You may need to handle exceptions by adding try ... catch block on each git operation.

repo = git.Repo(os.path.abspath(repo_path)
repo.git.tag('-a', tagname, commit, '-m', '')
repo.git.push('origin', tagname)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.