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封装对象实现时间效果
Apr 23 Python
在Django的URLconf中使用命名组的方法
Jul 18 Python
python利用socketserver实现并发套接字功能
Jan 26 Python
Python爬取qq空间说说的实例代码
Aug 17 Python
深入浅析Python 中 is 语法带来的误解
May 07 Python
Python 元组操作总结
Sep 18 Python
python绘制规则网络图形实例
Dec 09 Python
python GUI库图形界面开发之PyQt5表格控件QTableView详细使用方法与实例
Mar 01 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
keras 自定义loss损失函数,sample在loss上的加权和metric详解
May 23 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
详解Python 中的 defaultdict 数据类型
Feb 22 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
PHP5常用函数列表(分享)
2013/06/07 PHP
Yii2.0中使用js异步删除示例
2017/03/10 PHP
Avengerls vs KG BO3 第一场2.18
2021/03/10 DOTA
jquery 问答知识整理
2010/02/11 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
2011/07/12 Javascript
javascript编码的几个方法详细介绍
2013/01/06 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
几种二级联动案例(jQuery\Array\Ajax php)
2016/08/13 Javascript
详解利用exif.js解决ios手机上传竖拍照片旋转90度问题
2016/11/04 Javascript
BootStrap Validator对于隐藏域验证和程序赋值即时验证的问题浅析
2016/12/01 Javascript
Bootstrap源码解读下拉菜单(4)
2016/12/23 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
VUE2.0+ElementUI2.0表格el-table循环动态列渲染的写法详解
2018/11/30 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
Python 连连看连接算法
2008/11/22 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
Python socket 套接字实现通信详解
2019/08/27 Python
解决django接口无法通过ip进行访问的问题
2020/03/27 Python
Python任务调度模块APScheduler使用
2020/04/15 Python
通过实例解析Python RPC实现原理及方法
2020/07/07 Python
图解CSS3制作圆环形进度条的实例教程
2016/05/26 HTML / CSS
利用 Canvas实现绘画一个未闭合的带进度条的圆环
2019/07/26 HTML / CSS
杭州信雅达系统.NET工程师面试试题
2015/02/08 面试题
怎样自定义一个异常类
2016/09/27 面试题
移动通信行业实习自我鉴定
2013/09/28 职场文书
办公室主任职责范文
2013/11/08 职场文书
前台领班岗位职责
2013/12/04 职场文书
股权投资意向书
2014/04/01 职场文书
优秀教导主任事迹材料
2014/05/09 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
地方白酒代理协议书
2014/10/25 职场文书
暑假社会实践证明格式
2014/10/28 职场文书
计算机专业自荐信范文
2015/03/26 职场文书
python 开心网和豆瓣日记爬取的小爬虫
2021/05/29 Python