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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
用Python中的字典来处理索引统计的方法
May 05 Python
python 自动化将markdown文件转成html文件的方法
Sep 23 Python
Python控制多进程与多线程并发数总结
Oct 26 Python
Python 面试中 8 个必考问题
Nov 16 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python 的AES加密与解密实现
Jul 09 Python
Kears+Opencv实现简单人脸识别
Aug 28 Python
python求绝对值的三种方法小结
Dec 04 Python
pandas 对group进行聚合的例子
Dec 27 Python
Python drop方法删除列之inplace参数实例
Jun 27 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
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
PHP读取目录下所有文件的代码
2008/01/07 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
深入php处理整数函数的详解
2013/06/09 PHP
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
简单谈谈php浮点数精确运算
2016/03/10 PHP
ThinkPHP框架安全实现分析
2016/03/14 PHP
php微信开发之图片回复功能
2018/06/14 PHP
js 中{},[]中括号,大括号使用详解
2011/05/12 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
js获取URL的参数的方法(getQueryString)示例
2013/09/29 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
JavaScript eval() 函数介绍及应用示例
2014/07/29 Javascript
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
jQuery实现鼠标悬停背景翻转的黑色导航菜单代码
2015/09/14 Javascript
各式各样的导航条效果css3结合jquery代码实现
2016/09/17 Javascript
jQuery checkbox选中问题之prop与attr注意点分析
2016/11/15 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
JavaScript实现翻页功能(附效果图)
2017/02/16 Javascript
Vue单文件组件的如何使用方式介绍
2017/07/28 Javascript
一文搞懂ES6中的Map和Set
2019/05/20 Javascript
leaflet加载geojson叠加显示功能代码
2020/02/21 Javascript
微信小程序实现天气预报功能(附源码)
2020/12/10 Javascript
用Python实现一个简单的能够上传下载的HTTP服务器
2015/05/05 Python
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python 中的int()函数怎么用
2017/10/17 Python
PyQt5每天必学之日历控件QCalendarWidget
2018/04/19 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
canvas基础之图形验证码的示例
2018/01/02 HTML / CSS
医学生求职自荐信
2013/10/25 职场文书
化妆师职业生涯规划书
2014/02/16 职场文书
公司承诺书格式
2014/05/21 职场文书
车间核算员岗位职责
2014/07/01 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
《静夜思》教学反思
2016/02/17 职场文书
Win11如何查看显卡型号 Win11查看显卡型号的方法
2022/08/14 数码科技