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检测字符串中是否包含某字符集合中的字符
May 21 Python
Python类的动态修改的实例方法
Mar 24 Python
python实现连续图文识别
Dec 18 Python
python 读取修改pcap包的例子
Jul 23 Python
Python爬虫:将headers请求头字符串转为字典的方法
Aug 21 Python
python+jinja2实现接口数据批量生成工具
Aug 28 Python
基于python实现检索标记敏感词并输出
May 07 Python
python如何代码集体右移
Jul 20 Python
python如何停止递归
Sep 09 Python
Pycharm github配置实现过程图解
Oct 13 Python
用Python提取PDF表格的方法
Apr 11 Python
python 实现图与图之间的间距调整subplots_adjust
May 21 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
php 不使用js实现页面跳转
2014/02/11 PHP
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
PHP文件上传问题汇总(文件大小检测、大文件上传处理)
2015/12/24 PHP
PHP实现RSA签名生成订单功能【支付宝示例】
2017/06/06 PHP
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
网站导致浏览器崩溃的原因总结(多款浏览器) 推荐
2010/04/15 Javascript
有关JavaScript的10个怪癖和秘密分享
2011/08/28 Javascript
extjs中form与grid交互数据(record)的方法
2013/08/29 Javascript
JavaScript修改css样式style动态改变元素样式
2013/12/16 Javascript
jQuery实现新消息在网页标题闪烁提示
2015/06/23 Javascript
JS代码实现table数据分页效果
2016/05/26 Javascript
JavaScript ES6的新特性使用新方法定义Class
2016/06/28 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
2016/07/04 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
django使用channels2.x实现实时通讯
2018/11/28 Javascript
基于Vue实现的多条件筛选功能的详解(类似京东和淘宝功能)
2019/05/07 Javascript
Vue的状态管理vuex使用方法详解
2020/02/05 Javascript
JS获取当前时间戳方法解析
2020/08/29 Javascript
Vue v-for中的 input 或 select的值发生改变时触发事件操作
2020/08/31 Javascript
Django使用模板后无法找到静态资源文件问题解决
2019/07/19 Python
python实现邮件自动发送
2019/08/10 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Python打包模块wheel的使用方法与将python包发布到PyPI的方法详解
2020/02/12 Python
Pyinstaller打包Scrapy项目的实现步骤
2020/09/22 Python
基于 HTML5 Canvas实现 的交互式地铁线路图
2018/03/05 HTML / CSS
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
为娇小女性量身打造:Petite Studio
2018/11/01 全球购物
构造器Constructor是否可被override?
2013/08/06 面试题
社区党员先进事迹
2014/01/22 职场文书
中国梦读书活动总结
2014/07/10 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2014财务年终工作总结
2014/12/08 职场文书
2016年师德学习心得体会
2016/01/12 职场文书
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
关于Python中进度条的六个实用技巧分享
2022/04/05 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis