python调用git命令高端_用Python操作git命令

importosfrom git.repo importRepofrom git.repo.fun importis_git_dirclassGitRepository(object):"""git仓库管理"""

def __init__(self, local_path, repo_url, branch='master'):

self.local_path=local_path

self.repo_url=repo_url

self.repo=None

self.initial(repo_url, branch)definitial(self, repo_url, branch):"""初始化git仓库

:param repo_url:

:param branch:

:return:"""

if notos.path.exists(self.local_path):

os.makedirs(self.local_path)

git_local_path= os.path.join(self.local_path, '.git')if notis_git_dir(git_local_path):

self.repo= Repo.clone_from(repo_url, to_path=self.local_path, branch=branch)else:

self.repo=Repo(self.local_path)defpull(self):"""从线上拉最新代码

:return:"""self.repo.git.pull()defbranches(self):"""获取所有分支

:return:"""branches=self.repo.remote().refsreturn [item.remote_head for item in branches if item.remote_head not in ['HEAD', ]]defcommits(self):"""获取所有提交记录

:return:"""commit_log= self.repo.git.log('--pretty={"commit":"%h","author":"%an","summary":"%s","date":"%cd"}',

max_count=50,

date='format:%Y-%m-%d %H:%M')

log_list= commit_log.split("\n")return [eval(item) for item inlog_list]deftags(self):"""获取所有tag

:return:"""

return [tag.name for tag inself.repo.tags]defchange_to_branch(self, branch):"""切换分值

:param branch:

:return:"""self.repo.git.checkout(branch)defchange_to_commit(self, branch, commit):"""切换commit

:param branch:

:param commit:

:return:"""self.change_to_branch(branch=branch)

self.repo.git.reset('--hard', commit)defchange_to_tag(self, tag):"""切换tag

:param tag:

:return:"""self.repo.git.checkout(tag)if __name__ == '__main__':

local_path= os.path.join('codes', 'luffycity')

repo= GitRepository(local_path, 'https://gitee.com/wupeiqi/fuck.git')

branch_list=repo.branches()print(branch_list)

repo.change_to_branch('dev')

repo.pull()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值