如何使用GitPython标记特定提交

时间:2018-01-05 11:41:59

标签: python git gitpython

我创建了一个简单的脚本,它使用GitPython标记已经检出的特定分支上的最新提交。

from git import Repo

def TagRepo(path, tag):
    repo = Repo(path)
    repo.create_tag(tag)
    repo.remotes.origin.push(tag)


if __name__ == "__main__":

    parser = optparse.OptionParser('usage: %prog [options] ')
    parser.add_option('-p', '--path', dest='path', help='path to repo')
    parser.add_option('-t', '--tag', dest='tag', help='Tag label')

    (options, args) = parser.parse_args()

    TagRepo(options.path, options.tag)

我想改进它,以便我可以传递一个特定的提交的SHA和标记,而不是分支上的最新提交,但我看不到如何使用GitPython。

2 个答案:

答案 0 :(得分:1)

来自module的文档:

获取指定版本的提交

    repo.commit('master')
    repo.commit('v0.8.1')
    repo.commit('HEAD~10')

因此,要检索特定提交,请使用repo.commit('SHA-1')

答案 1 :(得分:0)

从源代码开始:

def create_tag(self, path, ref='HEAD', message=None, force=False, **kwargs)

您似乎可以将ref传递给create_tag,该行下面的注释描述为:

  

:param ref:               对要标记的对象的引用。它可以是提交,树或               斑点。

所以只需获取所需的提交并将其作为参考传递。不要像OP那样推动。