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 相关文章推荐
使用python3.5仿微软记事本notepad
Jun 15 Python
使用Python实现博客上进行自动翻页
Aug 23 Python
使用 Python 实现微信公众号粉丝迁移流程
Jan 03 Python
python微信公众号开发简单流程
Mar 23 Python
神经网络(BP)算法Python实现及应用
Apr 16 Python
python 创建一个空dataframe 然后添加行数据的实例
Jun 07 Python
Python实现重建二叉树的三种方法详解
Jun 23 Python
Python用csv写入文件_消除空余行的方法
Jul 06 Python
Python 中的lambda函数介绍
Oct 10 Python
python2和python3实现在图片上加汉字的方法
Aug 22 Python
解决Django layui {{}}冲突的问题
Aug 29 Python
python开根号实例讲解
Aug 30 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
图书管理程序(二)
2006/10/09 PHP
如何在PHP中使用正则表达式进行查找替换
2013/06/13 PHP
PHP获取当前所在目录位置的方法
2014/11/26 PHP
详细解读PHP中接口的应用
2015/08/12 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
JQuery浮动DIV提示信息并自动隐藏的代码
2010/08/29 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
jquery 插件学习(四)
2012/08/06 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
javascript实现信息增删改查的方法
2015/07/25 Javascript
jquery实现加载进度条提示效果
2015/11/23 Javascript
JSON与JS对象的区别与对比
2017/03/01 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
浅谈函数调用的不同方式,以及this的指向
2017/09/17 Javascript
小程序红包雨的实现示例
2019/02/19 Javascript
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
Python selenium 三种等待方式解读
2016/09/15 Python
Python爬虫DOTA排行榜爬取实例(分享)
2017/06/13 Python
Python实现小数转化为百分数的格式化输出方法示例
2017/09/20 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python PIL图片添加字体的例子
2019/08/22 Python
18个Python脚本可加速你的编码速度(提示和技巧)
2019/10/17 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
德国柯吉澳趣味家居:Koziol
2017/08/24 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
医院护士专业个人的求职信
2013/12/09 职场文书
管理部副部长岗位职责范文
2014/03/09 职场文书
社区爱国卫生月活动总结
2014/06/30 职场文书
乡镇民主生活会发言材料
2014/10/20 职场文书
社区志愿服务活动感想
2015/08/07 职场文书
Python Matplotlib库实现画局部图
2021/11/17 Python
利用JuiceFS使MySQL 备份验证性能提升 10 倍
2022/03/17 MySQL
MySQL导致索引失效的几种情况
2022/06/25 MySQL
python playwrigh框架入门安装使用
2022/07/23 Python