You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Clone repository and “checkout” to "tags/<my_tag>" #1026
More a general Q/A than an issue, but I'm struggling with this topic.
I clone a repository using Repo.clone_from(). Afterwards, I simply want to switch to a specified tag within the repository, similar to git checkout tags/<my_tag>.
I found the following solution, but it resets HEAD of my master branch, which is not what I want:
Is it possible to perform something like a git checkout tags/<my_tag> where I just switch to the current tag, but am able to switch also back to the current / latest commit on the repository?
That's quite alright, the issue was tagged accordingly. Thanks.
That's a great finding! I did do some searching to come up with the following.
detach the HEAD to point to the tag: repo.head.set_reference(repo.tags[tag].commit
reset the working tree to the current commit, but… it seems wonky to do it like this especially since there is repo.git.checkout(tag) which does exactly what you want.
I hope this answers the question - GitPython is a lot of 'low-level' plumbing, which makes some common operations unintuitive. These are best left to the git porcelain, provided by the git command-line interface.
Even though I am closing the issue, please feel free to keep posting follow-ups.
Activity
Byron commentedon Jul 6, 2020
That's quite alright, the issue was tagged accordingly. Thanks.
That's a great finding! I did do some searching to come up with the following.
HEADto point to the tag:repo.head.set_reference(repo.tags[tag].commitrepo.git.checkout(tag)which does exactly what you want.I hope this answers the question - GitPython is a lot of 'low-level' plumbing, which makes some common operations unintuitive. These are best left to the git porcelain, provided by the
gitcommand-line interface.Even though I am closing the issue, please feel free to keep posting follow-ups.
conFusl commentedon Aug 4, 2020
Thanks a lot for the reply.
I was struggling to follow the API description - and where I have which possibilities, e.g. repo, git, head, tags[]...
Your solution does exactly what I expected, and I was pretty sure that there is a possibility :-) Thanks!