我创建了一个简单的脚本,它使用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。
答案 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那样推动。