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中使用判断语句和循环的教程
Apr 25 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
利用python生成一个导出数据库的bat脚本文件的方法
Dec 30 Python
教你学会使用Python正则表达式
Sep 07 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 Python
django 使用全局搜索功能的实例详解
Jul 18 Python
Django项目中实现使用qq第三方登录功能
Aug 13 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
conda安装tensorflow和conda常用命令小结
Feb 20 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
python模块与C和C++动态库相互调用实现过程示例
Nov 02 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
第一个无线电台是由谁发明的
2021/03/01 无线电
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
php 远程关机操作的代码
2008/12/05 PHP
IIS6+PHP5+MySQL5+Zend Optimizer+phpMyAdmin安装配置图文教程 2009年
2009/06/08 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
PHP设计模式之装饰者模式代码实例
2015/05/11 PHP
yii2.0整合阿里云oss删除单个文件的方法
2017/09/19 PHP
PHP 观察者模式深入理解与应用分析
2019/09/25 PHP
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
禁用Tab键JS代码兼容Firefox和IE
2014/04/18 Javascript
js+HTML5基于过滤器从摄像头中捕获视频的方法
2015/06/16 Javascript
JavaScript实现为input与textarea自定义hover,focus效果的方法
2015/08/21 Javascript
jquery实现带缩略图的可定制高度画廊效果(5种)
2015/08/28 Javascript
JS实现自动定时切换的简洁网页选项卡效果
2015/10/13 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
AngularJs Injecting Services Into Controllers详解
2016/09/02 Javascript
老生常谈Javascript中的原型和this指针
2016/10/09 Javascript
vue的一个分页组件的示例代码
2017/12/25 Javascript
vue 项目地址去掉 #的方法
2018/10/20 Javascript
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
Python for循环与range函数的使用详解
2019/03/23 Python
详解用python实现基本的学生管理系统(文件存储版)(python3)
2019/04/25 Python
python之列表推导式的用法
2019/11/29 Python
Python读写锁实现实现代码解析
2020/11/28 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
英国儿童家具专卖店:GLTC
2016/09/24 全球购物
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
党员公开承诺书
2014/03/25 职场文书
买房委托公证书
2014/04/08 职场文书
2014年电信员工工作总结
2014/12/19 职场文书
财务部岗位职责
2015/02/03 职场文书
干部培训工作总结2015
2015/05/25 职场文书
SQL Server连接查询的实用教程
2021/04/07 SQL Server