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+微信接口实现运维报警
Aug 27 Python
Python多线程经典问题之乘客做公交车算法实例
Mar 22 Python
Python 爬虫图片简单实现
Jun 01 Python
python中如何使用正则表达式的集合字符示例
Oct 09 Python
浅谈配置OpenCV3 + Python3的简易方法(macOS)
Apr 02 Python
便捷提取python导入包的属性方法
Oct 15 Python
Django实现学生管理系统
Feb 26 Python
Python单元测试与测试用例简析
Nov 09 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
Jan 05 Python
python FTP编程基础入门
Feb 27 Python
Python 机器学习工具包SKlearn的安装与使用
May 14 Python
Django数据库(SQlite)基本入门使用教程
Jul 07 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
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
2015/03/26 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
eclipse php wamp配置教程
2016/06/30 PHP
在javascript将NodeList作为Array数组处理的方法
2010/07/09 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
使用JS代码实现点击按钮下载文件
2016/11/12 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
JavaScript 事件流、事件处理程序及事件对象总结
2017/04/01 Javascript
关于vuex的学习实践笔记
2017/04/05 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
js+html5实现复制文字按钮
2017/07/15 Javascript
JavaScript数据结构之双向链表定义与使用方法示例
2017/10/27 Javascript
vue实现搜索功能
2019/05/28 Javascript
《javascript设计模式》学习笔记三:Javascript面向对象程序设计单例模式原理与实现方法分析
2020/04/07 Javascript
使用Python生成XML的方法实例
2017/03/21 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
Python闭包函数定义与用法分析
2018/07/20 Python
selenium+python 对输入框的输入处理方法
2018/10/11 Python
Django框架验证码用法实例分析
2019/05/10 Python
用Python从0开始实现一个中文拼音输入法的思路详解
2019/07/20 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
HTML5+CSS3实现无插件拖拽上传图片(支持预览与批量)
2017/01/05 HTML / CSS
澳大利亚领先的运动鞋商店:Hype DC
2018/03/31 全球购物
墨尔本复古时尚品牌:Dangerfield
2018/12/12 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
庆六一开幕词
2015/01/29 职场文书
离婚答辩状怎么写
2015/05/22 职场文书
2019预备党员转正申请书模板2篇!
2019/08/07 职场文书
Django中的JWT身份验证的实现
2021/05/07 Python
PHP遍历数组的6种方式总结
2021/11/17 PHP
python实现学员管理系统(面向对象版)
2022/06/05 Python