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 相关文章推荐
在Docker上部署Python的Flask框架的教程
Apr 08 Python
windows下ipython的安装与使用详解
Oct 20 Python
Python 编码规范(Google Python Style Guide)
May 05 Python
Python3.6.2调用ffmpeg的方法
Jan 10 Python
浅谈pytorch池化maxpool2D注意事项
Feb 18 Python
Win 10下Anaconda虚拟环境的教程
May 18 Python
PyCharm MySQL可视化Database配置过程图解
Jun 09 Python
浅谈Python中的字符串
Jun 10 Python
浅谈keras中的keras.utils.to_categorical用法
Jul 02 Python
django filter过滤器实现显示某个类型指定字段不同值方式
Jul 16 Python
Pandas||过滤缺失数据||pd.dropna()函数的用法说明
May 14 Python
Pycharm连接远程服务器并远程调试的全过程
Jun 24 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实现的简易版图片相似度比较
2015/01/07 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
javascript小组件 原生table排序表格脚本(兼容ie firefox opera chrome)
2012/07/25 Javascript
JSON为什么那样红为什么要用json(另有洞天)
2012/12/26 Javascript
JS获取并操作iframe中元素的方法
2013/03/21 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
基于iframe实现类似于ajax的页面无刷新
2014/05/31 Javascript
jQuery实现的AJAX简单弹出层效果代码
2015/11/26 Javascript
jquery html动态添加的元素绑定事件详解
2016/05/24 Javascript
Bootstrap框架安装使用详解
2017/01/21 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
js中的事件委托或是事件代理使用详解
2017/06/23 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
vue后台管理之动态加载路由的方法
2018/08/13 Javascript
探究一道价值25k的蚂蚁金服异步串行面试题
2020/08/21 Javascript
vant picker+popup 自定义三级联动案例
2020/11/04 Javascript
Python实现简单的语音识别系统
2017/12/13 Python
tensorflow实现图像的裁剪和填充方法
2018/07/27 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
python名片管理系统开发
2020/06/18 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
Django多数据库联用实现方法解析
2020/11/12 Python
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
什么叫应用程序域?什么是受管制的代码?什么是强类型系统?什么是装箱和拆箱?
2016/08/13 面试题
2014年党的群众路线教育实践活动总结
2014/04/25 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
个人违纪检讨书
2014/09/15 职场文书
党的群众路线教育实践活动实施方案
2014/10/31 职场文书
2014年质检工作总结
2014/11/26 职场文书
教师个人考察材料
2014/12/16 职场文书
如何用python插入独创性声明
2021/03/31 Python
springboot集成flyway自动创表的详细配置
2021/06/26 Java/Android