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中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
老生常谈Python序列化和反序列化
Jun 28 Python
tensorflow 输出权重到csv或txt的实例
Jun 14 Python
Python Series从0开始索引的方法
Nov 06 Python
在PyCharm下使用 ipython 交互式编程的方法
Jan 17 Python
Python如何爬取实时变化的WebSocket数据的方法
Mar 09 Python
python中字符串数组逆序排列方法总结
Jun 23 Python
Python将文字转成语音并读出来的实例详解
Jul 15 Python
django框架创建应用操作示例
Sep 26 Python
Python单元测试模块doctest的具体使用
Feb 10 Python
python设置代理和添加镜像源的方法
Feb 14 Python
解决ROC曲线画出来只有一个点的问题
Feb 28 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图片上传类带图片显示
2006/11/25 PHP
一个很不错的PHP翻页类
2009/06/01 PHP
php curl基本操作详解
2013/07/23 PHP
PHP判断远程图片或文件是否存在的实现代码
2014/02/20 PHP
浅谈PHP中output_buffering
2015/07/13 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
javascript中length属性的探索
2011/07/31 Javascript
使用POST方式弹出窗口的两种方法示例介绍
2014/01/29 Javascript
一个非常全面的javascript URL解析函数和分段URL解析方法
2014/04/12 Javascript
一个简单的jquery进度条示例
2014/04/28 Javascript
常见浏览器多长时间会提示“脚本运行时间过长”总结
2014/04/29 Javascript
禁止按回车键提交表单的方法
2015/06/11 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
JavaScript中rem布局在react中的应用
2015/12/09 Javascript
第四章之BootStrap表单与图片
2016/04/25 Javascript
分享javascript实现的冒泡排序代码并优化
2016/06/05 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
基于jQuery实现定位导航位置效果
2017/11/15 jQuery
javascript自定义右键菜单插件
2019/12/16 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
Python 用Redis简单实现分布式爬虫的方法
2017/11/23 Python
python Zmail模块简介与使用示例
2020/12/19 Python
python Timer 类使用介绍
2020/12/28 Python
HTML 5 input placeholder 属性如何完美兼任ie
2014/05/12 HTML / CSS
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
出国留学经济担保书
2014/04/01 职场文书
新春寄语大全
2014/04/09 职场文书
幼儿园辞职书
2015/02/26 职场文书
导游带团欢迎词
2015/09/30 职场文书
有关信念的名言语录集锦
2019/12/06 职场文书
七年级作文之下雨天
2019/12/23 职场文书
spring项目中切面及AOP的使用方法
2021/06/26 Java/Android
Python内置包对JSON文件数据进行编码和解码
2022/04/12 Python
利用正则表达式匹配浮点型数据
2022/05/30 Java/Android