python调用git命令返回结果集_用Python操作git命令

import os

from git.repo import Repo

from git.repo.fun import is_git_dir

class GitRepository(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)

def initial(self, repo_url, branch):

"""

初始化git仓库

:param repo_url:

:param branch:

:return:

"""

if not os.path.exists(self.local_path):

os.makedirs(self.local_path)

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

if not is_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)

def pull(self):

"""

从线上拉最新代码

:return:

"""

self.repo.git.pull()

def branches(self):

"""

获取所有分支

:return:

"""

branches = self.repo.remote().refs

return [item.remote_head for item in branches if item.remote_head not in ['HEAD', ]]

def commits(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 in log_list]

def tags(self):

"""

获取所有tag

:return:

"""

return [tag.name for tag in self.repo.tags]

def change_to_branch(self, branch):

"""

切换分值

:param branch:

:return:

"""

self.repo.git.checkout(branch)

def change_to_commit(self, branch, commit):

"""

切换commit

:param branch:

:param commit:

:return:

"""

self.change_to_branch(branch=branch)

self.repo.git.reset('--hard', commit)

def change_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()

标签:git,Python,self,repo,命令,branch,path,local

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值