如何使用python代码操作git代码

 更新时间:2020年02月29日 16:56:24   作者:tomjoy  
Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。本文通过实例代码给大家介绍如何使用python代码操作git,感兴趣的朋友一起看看吧

git简介

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git 与 SVN 区别

Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。

如果你是一个具有使用 SVN 背景的人,你需要做一定的思想转换,来适应 Git 提供的一些概念和特征。

Git 与 SVN 区别点:

1、Git 是分布式的,SVN 不是:这是 Git 和其它非分布式的版本控制系统,例如 SVN,CVS 等,最核心的区别。

2、Git 把内容按元数据方式存储,而 SVN 是按文件:所有的资源控制系统都是把文件的元信息隐藏在一个类似 .svn、.cvs 等的文件夹里。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一点都不特别,其实它就是版本库中的另外一个目录。

4、Git 没有一个全局的版本号,而 SVN 有:目前为止这是跟 SVN 相比 Git 缺少的最大的一个特征。

5、Git 的内容完整性要优于 SVN:Git 的内容存储使用的是 SHA-1 哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

python操作git

安装模块

pip3 install gitpython

基本使用

import os
from git.repo import Repo
# 创建本地路径用来存放远程仓库下载的代码
download_path = os.path.join('NB')
# 拉取代码
Repo.clone_from('https://github.com/DominicJi/TeachTest.git',to_path=download_path,branch='master')

其他常见操作

# ############## 2. pull最新代码 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
repo.git.pull()
# ############## 3. 获取所有分支 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
branches = repo.remote().refs
for item in branches:
 print(item.remote_head)
# ############## 4. 获取所有版本 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
for tag in repo.tags:
 print(tag.name)
# ############## 5. 获取所有commit ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
# 将所有提交记录结果格式成json格式字符串 方便后续反序列化操作
commit_log = 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")
real_log_list = [eval(item) for item in log_list]
print(real_log_list)
# ############## 6. 切换分支 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
before = repo.git.branch()
print(before)
repo.git.checkout('master')
after = repo.git.branch()
print(after)
repo.git.reset('--hard', '854ead2e82dc73b634cbd5afcf1414f5b30e94a8')
# ############## 7. 打包代码 ##############
import os
from git.repo import Repo
local_path = os.path.join(NB')
repo = Repo(local_path)
with open(os.path.join('NB.tar'), 'wb') as fp:
 repo.archive(fp)

将上述所有的方法封装到类中以便后续的调用(后续如果你想要操作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)

到此这篇关于如何使用python代码操作git代码的文章就介绍到这了,更多相关python 操作git内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现爬山算法的思路详解

    python实现爬山算法的思路详解

    爬山算法会收敛到局部最优,解决办法是初始值在定义域上随机取乱数100次,总不可能100次都那么倒霉。这篇文章主要介绍了python实现爬山算法的思路详解,需要的朋友可以参考下
    2019-04-04
  • Python OpenCV实现视频追踪

    Python OpenCV实现视频追踪

    这篇文章主要为大家详细介绍了Python OpenCV实现视频追踪,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Python的__builtin__模块中的一些要点知识

    Python的__builtin__模块中的一些要点知识

    这篇文章主要介绍了Python的__builtin__模块中的一些要点知识,是Python学习中的基础,需要的朋友可以参考下
    2015-05-05
  • Python算法应用实战之栈详解

    Python算法应用实战之栈详解

    栈是什么,你可以理解为一种先入后出的数据结构(First In Last Out),一种操作受限的线性表。下面这篇文章主要给大家介绍了Python中栈的应用实战,文中给出了多个实例,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-02-02
  • 浅谈Python中列表生成式和生成器的区别

    浅谈Python中列表生成式和生成器的区别

    这篇文章主要介绍了浅谈Python中列表生成式和生成器的区别,是Python入门学习中的基础知识,需要的朋友可以参考下
    2015-08-08
  • Python+xlwings制作天气预报表

    Python+xlwings制作天气预报表

    python操作Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等。本文将利用xlwings模块制作一个天气预报表,需要的可以参考一下
    2022-01-01
  • python实现五子棋人机对战游戏

    python实现五子棋人机对战游戏

    这篇文章主要为大家详细介绍了python实现五子棋之人机对战游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-06-06
  • python 换位密码算法的实例详解

    python 换位密码算法的实例详解

    这篇文章主要介绍了python 换位密码算法的实例详解的相关资料,换位密码基本原理:先把明文按照固定长度进行分组,然后对每一组的字符进行换位操作,从而实现加密,需要的朋友可以参考下
    2017-07-07
  • 浅谈Python小波分析库Pywavelets的一点使用心得

    浅谈Python小波分析库Pywavelets的一点使用心得

    这篇文章主要介绍了浅谈Python小波分析库Pywavelets的一点使用心得,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 详解Python中命令行参数argparse的常用命令

    详解Python中命令行参数argparse的常用命令

    这篇文章主要为大家详细介绍了Python中命令行参数argparse的一些常用命令,文中的示例代码讲解详细,具有一定的学习价值,需要的可以了解一下
    2023-01-01

最新评论