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 开发Activex组件方法
Nov 08 Python
python对DICOM图像的读取方法详解
Jul 17 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
Python实现拷贝/删除文件夹的方法详解
Aug 29 Python
使用Python的toolz库开始函数式编程的方法
Nov 15 Python
python批量将excel内容进行翻译写入功能
Oct 10 Python
使用python实现希尔、计数、基数基础排序的代码
Dec 25 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
详解python 支持向量机(SVM)算法
Sep 18 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
python 实现的截屏工具
May 08 Python
Matplotlib绘制混淆矩阵的实现
May 27 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
一个图形显示IP的PHP程序代码
2007/10/19 PHP
PHP程序61条面向对象分析设计的经验小结
2008/11/12 PHP
PHP IPV6正则表达式验证代码
2010/02/16 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
解析JavaScript中的标签语句
2013/06/19 Javascript
jquery 获取dom固定元素 添加样式的简单实例
2014/02/04 Javascript
JavaScript学习心得之概述
2015/01/20 Javascript
js仿支付宝填写支付密码效果实现多方框输入密码
2016/03/09 Javascript
详解jquery选择器的原理
2017/08/01 jQuery
Windows下Node.js安装及环境配置方法
2017/09/18 Javascript
浅谈NodeJs之数据库异常处理
2017/10/25 NodeJs
vue-cli 如何打包上线的方法示例
2018/05/08 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
py中的目录与文件判别代码
2008/07/16 Python
python实现linux下抓包并存库功能
2018/07/18 Python
对python中矩阵相加函数sum()的使用详解
2019/01/28 Python
python实现电子产品商店
2019/02/26 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Joe Fresh官网:加拿大时尚品牌和零售连锁店
2016/11/30 全球购物
擅自离岗检讨书
2014/02/11 职场文书
拒绝黄毒毒宣传标语
2014/06/26 职场文书
授权收款委托书范本
2014/10/10 职场文书
2014年小班保育员工作总结
2014/12/23 职场文书
初三英语教学计划
2015/01/23 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
初中生物教学随笔
2015/08/15 职场文书
团队执行力培训心得体会
2015/08/15 职场文书
发工资啦!教你用Python实现邮箱自动群发工资条
2021/05/10 Python
教你利用python实现企业微信发送消息
2021/05/23 Python