Python使用GitPython操作Git版本库的方法


Posted in Python onFebruary 29, 2020

GitPython 是一个用于操作 Git 版本库的 python 包,它提供了一系列的对象模型(库 - Repo、树 - Tree、提交 - Commit等),用于操作版本库中的相应对象。

1、导包

from git import *

2、初始化git仓库

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
empty_repo = Repo.init(os.path.join(CURRENT_DIR, 'bbs')) # bbs目录不存在则新建

3、如果git仓库已存在,直接获取

repo = Repo(os.path.join(CURRENT_DIR, 'bbs'))

4、获取当前远程库

repo.remotes # 获取当前有哪些远程库 = git remote -v命令,返回一个repo列表

5、新建远程库

# 新建远程库 = git remote add origin git_url, 返回Remote对象(<class 'git.remote.Remote'>)
origin = repo.create_remote('origin', git_url)

6、fetch

origin.fetch()

7、建立一个关联远程分支的本地分支,分三步

empty_repo.create_head('master', origin.refs.master) # create local branch "master" from remote "master"
empty_repo.heads.master.set_tracking_branch(origin.refs.master) # set local "master" to track remote "master
empty_repo.heads.master.checkout() # checkout local "master" to working tree

# 以上三步可以简化为一行代码
repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master).checkout() # 建立本地master分支,关联远程master分支,checkout

8、获取所有远程分支

origin.refs # 返回所有远程分支列表
 [<git.RemoteReference "refs/remotes/new_origin/develop">, <git.RemoteReference "refs/remotes/new_origin/master">]

9、获取所有本地分支(git.HEAD)和远程分支(git.RemoteReference)

repo.refs # 返回所有本地分支列表

10、获取本地heads

repo.heads # 返回Head列表

11、获取当前head指向

repo.head.reference

12、切换分支

a、本地存在此分支 repo.head.reference = repo.heads.develop b、本地不存在,需要从远程拉去 repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master).checkout()

总结

到此这篇关于Python使用GitPython操作Git版本库的方法的文章就介绍到这了,更多相关python操作git版本库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python使用xmlrpc实例讲解
Dec 17 Python
Python在groupby分组后提取指定位置记录方法
Apr 20 Python
python实现的登录与提交表单数据功能示例
Sep 25 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
python小白学习包管理器pip安装
Jun 09 Python
Python实现爬取并分析电商评论
Jun 19 Python
python把一个字符串切开的实例方法
Sep 27 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
python 提高开发效率的5个小技巧
Oct 19 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
python调试工具Birdseye的使用教程
May 25 Python
pytorch分类模型绘制混淆矩阵以及可视化详解
Apr 07 Python
如何使用python代码操作git代码
Feb 29 #Python
使用 Python 遍历目录树的方法
Feb 29 #Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 #Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 #Python
python pandas移动窗口函数rolling的用法
Feb 29 #Python
基于Python fminunc 的替代方法
Feb 29 #Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 #Python
You might like
POSIX 风格和兼容 Perl 风格两种正则表达式主要函数的类比(preg_match, preg_replace, ereg, ereg_replace)
2010/10/12 PHP
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
2014/07/08 Javascript
10条建议帮助你创建更好的jQuery插件
2015/05/18 Javascript
js+cookies实现悬浮购物车的方法
2015/05/25 Javascript
使用Node.js实现RESTful API的示例
2017/08/01 Javascript
JavaScript引用类型Date常见用法实例分析
2018/08/08 Javascript
Vue实现商品飞入购物车效果(电商项目)
2019/11/26 Javascript
Vue中fragment.js使用方法小结
2020/02/17 Javascript
Python中利用Scipy包的SIFT方法进行图片识别的实例教程
2016/06/03 Python
python 网络编程详解及简单实例
2017/04/25 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
numpy 计算两个数组重复程度的方法
2018/11/07 Python
python进行文件对比的方法
2018/12/24 Python
如何通过Python实现标签云算法
2019/07/02 Python
详解python tkinter模块安装过程
2020/01/06 Python
python实现的分层随机抽样案例
2020/02/25 Python
python里反向传播算法详解
2020/11/22 Python
干部行政关系介绍信
2014/01/17 职场文书
学校大课间活动方案
2014/01/30 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
乡镇挂职心得体会
2014/09/04 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
2014年初三班主任工作总结
2014/12/05 职场文书
2015年大学生暑期实习报告
2015/07/13 职场文书
民事调解协议书
2016/03/21 职场文书
教你用python控制安卓手机
2021/05/13 Python
关于Numpy之repeat、tile的用法总结
2021/06/02 Python
关于ObjectUtils.isEmpty() 和 null 的区别
2022/02/28 Java/Android
一级电子管军用接收机测评
2022/04/05 无线电