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基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 Python
Flask框架学习笔记(一)安装篇(windows安装与centos安装)
Jun 25 Python
Python自动化运维和部署项目工具Fabric使用实例
Sep 18 Python
python实现逻辑回归的方法示例
May 02 Python
浅谈Python 的枚举 Enum
Jun 12 Python
微信小程序跳一跳游戏 python脚本跳一跳刷高分技巧
Jan 04 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
python3 pillow模块实现简单验证码
Oct 31 Python
wxPython实现整点报时
Nov 18 Python
Python批量获取并保存手机号归属地和运营商的示例
Oct 09 Python
Python结合百度语音识别实现实时翻译软件的实现
Jan 18 Python
Python中的tkinter库简单案例详解
Jan 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&amp;MYSQL服务器配置说明
2006/10/09 PHP
php 攻击方法之谈php+mysql注射语句构造
2009/10/30 PHP
php适配器模式介绍
2012/08/14 PHP
PHP获取表单所有复选框的值的方法
2014/08/28 PHP
ThinkPHP中where()使用方法详解
2016/04/19 PHP
PHP数据库表操作的封装类及用法实例详解
2016/07/12 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
PHP文件管理之实现网盘及压缩包的功能操作
2017/09/20 PHP
用js实现的一个Flash滚动轮换显示图片代码生成器
2007/03/14 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
抛弃Nginx使用nodejs做反向代理服务器
2014/07/17 NodeJs
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
JavaScript对Cookie进行读写操作实例
2015/07/25 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
JavaScript数据类型学习笔记
2016/01/25 Javascript
JS实现中文汉字按拼音排序的方法
2017/10/09 Javascript
jquery图片预览插件实现方法详解
2019/07/18 jQuery
jquery实现的分页显示功能示例
2019/08/23 jQuery
Python Property属性的2种用法
2015/06/21 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
Python机器学习之决策树算法
2017/12/22 Python
python实现ip代理池功能示例
2019/07/05 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
Python 实现训练集、测试集随机划分
2020/01/08 Python
python梯度下降算法的实现
2020/02/24 Python
Python 解决火狐浏览器不弹出下载框直接下载的问题
2020/03/09 Python
Python常用编译器原理及特点解析
2020/03/23 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
德国W家官网,可直邮中国的母婴商城:Windeln.de
2021/03/03 全球购物
党务公开方案
2014/05/06 职场文书
2014年巴西世界杯口号
2014/06/05 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
书法社团活动总结
2015/05/07 职场文书
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL